查找包含特定属性值的属性的所有类

时间:2010-08-26 15:50:59

标签: c# linq reflection

是否可以根据给予该属性的值找到标记有自定义属性的类?

基本上,我的课程看起来像这样 -

[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”的类。该值可通过名为Id的MyAttr上的属性获得。

这是我的尝试 -

var message = from m in c
                  from a in m.GetCustomAttributes(typeof(MyAttr), false)
                  where ((MyAttr)a).Id == "CODE"
              select m;

这没有做到这一点。所以,真正的问题是,如果这是可能的,如果是这样的话需要改变什么来获得适当的类(并实例化它)。

1 个答案:

答案 0 :(得分:3)

Assembly.GetExecutingAssembly()替换为typeof(AbstractParentClass).Assembly