Я создал собственный атрибут для украшения ряда классов, к которым я хочу запросить во время выполнения:
[AttributeUsage(AttributeTargets.Class, AllowMultiple=false, Inherited=true)]
public class ExampleAttribute : Attribute
{
public ExampleAttribute(string name)
{
this.Name = name;
}
public string Name
{
get;
private set;
}
}
Каждый из этих классов является производным от абстрактного базового класса:
[Example("BaseExample")]
public abstract class ExampleContentControl : UserControl
{
// class contents here
}
public class DerivedControl : ExampleContentControl
{
// class contents here
}
Нужно ли помещать этот атрибут в каждый производный класс, даже если я добавлю его в базовый класс?Атрибут помечается как наследуемый, но когда я выполняю запрос, я вижу только базовый класс, а не производные классы.
Из другой поток :
var typesWithMyAttribute =
from a in AppDomain.CurrentDomain.GetAssemblies()
from t in a.GetTypes()
let attributes = t.GetCustomAttributes(typeof(ExampleAttribute), true)
where attributes != null && attributes.Length > 0
select new { Type = t, Attributes = attributes.Cast<ExampleAttribute>() };
Спасибо, WTS