我有一组实现公共接口的类,并使用业务域属性进行注释。根据设计,每个类都使用不同的参数化注释
[Foo(Bar=1)]
public class EntityA : ICustomInterface
[Foo(Bar=2)]
public class EntityB : ICustomInterface
[Foo(Bar=3)]
public class EntityC : ICustomInterface
从Spring IApplicationContext
或使用普通旧反射,如何找到实现ICustomInterface
和的类使用[Foo(Bar=Y)]
进行注释?
像Spring的Java getBeansWithAnnotation
。我不需要Spring.net,因为这些对象是原型。需要明确的是:如果我的任务根本不需要使用Spring,我很满意
答案 0 :(得分:2)
如果您已获得装配,您可以迭代这些类型并检查您的条件:
var matchingTypes =
from t in asm.GetTypes()
where !t.IsInterface && !t.IsAbstract
where typeof(ICustomInterface).IsAssignableFrom(t)
let foo = t.GetCustomAttribute<FooAttribute>()
where foo != null && foo.Bar == Y
select t;
我假设您只想要Foo.Bar
具有值Y
。