我在使用AutoFacv3.5.2的Asp.Net Web Apiv2中遇到以下问题
我基本上无法让IEnumerable<Lazy<IFoo, FooAttribute>>
给我任何回报。 IEnumerable<Lazy<IFoo>>
向我提供了相关信息,IEnumerable<Meta<IFoo>>
给了我结果。
我不知道要添加哪些细节,但我可以添加尽可能多的细节。
示例属性
public class FooStrategyAttribute: Attribute
{
public FooStrategyAttribute(StrategyType strategyType)
{
StrategyType = strategyType;
}
public StrategyType StrategyType { get; set; }
}
示例:应用属性
[FooStrategy(StrategyType.StrategyOne)]
public class Handler: IHandler
{
}
示例:界面注册:
builder.RegisterAssemblyTypes(assemblies)
.Where(t => t.GetCustomAttributes<FooStrategyAttribute>().Any())
.WithMetadataFrom<FooStrategyAttribute>()
.AsImplementedInterfaces();
正在注入的构造函数:
public Thingy(IEnumerable<Lazy<IHandler, FooStrategyAttribute>> handlers)
{
this.handlers= handlers;
}