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