Можно ли найти класс, помеченный настраиваемым атрибутом на основе значения, присвоенного этому атрибуту?
В основном, у меня есть классы, которые выглядят так -
[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;
Это не помогло. Итак, настоящий вопрос в том, возможно ли это вообще, и если да, то что нужно изменить, чтобы получить соответствующий класс (и создать его экземпляр).