Можно ли найти класс, помеченный пользовательским атрибутом на основе значения, данного этому атрибуту?
В принципе, у меня есть классы, которые выглядят так -
[MyAttr("CODE")]
public class MyClass() {}
Оттуда я получаю все классы (типы) -
var c = Assembly.GetExecutingAssembly().GetTypes().Where
(
t => t.IsClass &&
t.Namespace == (typeof(AbstractParentClass)).Namespace &&
t.IsSubclassOf(typeof(AbstractParentClass))
);
Кажется, все это работает.c
содержит все соответствующие классы.Теперь мне нужно получить класс из c
, который имеет атрибут MyAttr
и значение "CODE".Значение доступно через свойство в MyAttr, которое называется Id
.
Это была моя попытка -
var message = from m in c
from a in m.GetCustomAttributes(typeof(MyAttr), false)
where ((MyAttr)a).Id == "CODE"
select m;
Это не сработало.Итак, реальный вопрос заключается в том, возможно ли это вообще, и если да, то что нужно изменить, чтобы получить соответствующий класс (и создать его экземпляр).