Ich verstehe nicht, was das Problem ist. Ihr veröffentlichter Code führt die erwartete Sache (zumindest, was es scheint, dass Sie es erwarten) in meinem Test: das StyleString
Eigentum hat das ExternallyVisible
Attribut nicht. Hier ist mein Testcode:
[AttributeUsage(AttributeTargets.Property)]
public class ExternallyVisible : Attribute
{
}
public class MyWebControl
{
[ExternallyVisible]
public string StyleString { get; set; }
}
public class SmarterWebControl : MyWebControl
{
[ExternallyVisible]
public string CssName { get; set; }
new public string StyleString { get; set; } //Doesn't work
}
class Program
{
static void Main()
{
MyWebControl myctrl = new MyWebControl();
SmarterWebControl smartctrl = new SmarterWebControl();
MemberInfo info = typeof(SmarterWebControl);
PropertyInfo[] props = (typeof(SmarterWebControl)).GetProperties();
Console.WriteLine("{0} properties", props.Length);
foreach (var prop in props)
{
Console.WriteLine(prop.Name);
foreach (var attr in prop.GetCustomAttributes(true))
{
Console.WriteLine(" " + attr);
}
}
Console.ReadLine();
}
}
In .NET 4.0, erhalte ich diese Ausgabe:
2 properties
CssName
sotesto.ExternallyVisible
StyleString
Mit anderen Worten, wird das Attribut nicht angewandt auf die StyleString
Eigenschaft.
froh, das funktioniert, war ich verwirrt, warum wäre es nicht. Muss ich sagen, ich bin mir nicht sicher, ob ich die Verwendung von neuen hier mag (obwohl ich im Allgemeinen anti - neu im Allgemeinen bin). Wenn jemand die Klasse betrachtet, sagt er ihnen nicht, warum Sie das tun. Mit einem Attribut mit einem falschen Parameter auf der anderen Seite ist selbst Dokumentieren imho –
True, und wenn ich das ganze Ding von Grund auf neu schreiben würde ich es wahrscheinlich so tun;) –