Найти все классы с атрибутом, содержащим конкретное значение свойства

Можно ли найти класс, помеченный настраиваемым атрибутом на основе значения, присвоенного этому атрибуту?

В основном, у меня есть классы, которые выглядят так -

[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;

Это не помогло. Итак, настоящий вопрос в том, возможно ли это вообще, и если да, то что нужно изменить, чтобы получить соответствующий класс (и создать его экземпляр).

6
задан mld 26 August 2010 в 15:50
поделиться