具有属性的AutoFac和Lazy <t,tmetadata =“”>

时间:2015-12-31 17:38:50

标签: c# asp.net-web-api autofac

我在使用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;
}

0 个答案:

没有答案