是否可以根据给予该属性的值找到标记有自定义属性的类?
基本上,我的课程看起来像这样 -
[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;
这没有做到这一点。所以,真正的问题是,如果这是可能的,如果是这样的话需要改变什么来获得适当的类(并实例化它)。
答案 0 :(得分:3)
将Assembly.GetExecutingAssembly()
替换为typeof(AbstractParentClass).Assembly
。