Я не понимаю, в чем проблема. Размещенный код выполняет ожидаемую вещь (по крайней мере, то, что, по-видимому, вы ожидаете) в моем тесте: свойство StyleString
не имеет атрибута ExternallyVisible
Вот мой тестовый код:
[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();
}
}
В .NET 4.0 я получаю этот вывод:
2 properties
CssName
sotesto.ExternallyVisible
StyleString
Другими словами, атрибут не применяется к свойству StyleString
.