Я создал пользовательский атрибут для украшения многих классов, для которых я хочу запросить во времени выполнения:
[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() };
Спасибо, wTs