C# 使用Autofac将指定的键控/命名项列表注入组件

C# 使用Autofac将指定的键控/命名项列表注入组件,c#,autofac,C#,Autofac,我有一个接口IService,其中我有多个实现。我有一个类ConsumerClass,它将IEnumerable作为参数。我意识到,如果我离开它,Autofac将自动创建可枚举项,并用所有已注册的服务实现填充它,但我想指定注入哪些实现 这样做的一个原因是ConsumerClass可能有一个实现,但在Autofac中注册了两次-唯一的区别是注入了什么。我意外地发现了这一点。基本上,ResolvedParameter构造函数第二个参数返回结果来填充它,因此我可以自己创建列表。虽然不完美,但它确实有效

我有一个接口IService,其中我有多个实现。我有一个类ConsumerClass,它将IEnumerable作为参数。我意识到,如果我离开它,Autofac将自动创建可枚举项,并用所有已注册的服务实现填充它,但我想指定注入哪些实现


这样做的一个原因是ConsumerClass可能有一个实现,但在Autofac中注册了两次-唯一的区别是注入了什么。

我意外地发现了这一点。基本上,ResolvedParameter构造函数第二个参数返回结果来填充它,因此我可以自己创建列表。虽然不完美,但它确实有效:

builder.RegisterType<Component>().WithParameters(new[] {
    new ResolvedParameter((p,c) => p.Name == "serv",(p,c) => 
        new List<ITerry>
        {
            c.ResolveKeyed<IService>(Services.Svc1),
            c.ResolveKeyed<IService>(Services.Svc3),
            c.ResolveKeyed<IService>(Services.Svc8),
        })
});