我有一个接口的实现,我需要将第一个实现注入到一个服务中,将第二个实现注入到另一个服务中。每个服务也被注入了没有多个实现的其他依赖。使用Unity注入特定实现
到目前为止,我有这样的事情:
public FirstService(IDataRepository dr, IOtherRepository or)
{
this.DataRepository = dr;
this.OtherRepository = or;
}
public SecondService(IDataRepository dr, IAnotherRepository ar)
{
this.DataRepository = dr;
this.OtherRepository = ar;
}
然后在我的引导程序,我有:
container.RegisterType<IDataRepository, FirstDataRepository>("First");
container.RegisterType<IDataRepository, SecondDataRepository>("Second");
container.RegisterType<IOtherRepository ,OtherRepositor>();
container.RegisterType<IAnotherRepository ,AnotherRepository>();
container.RegisterType<IFirstService, FirstService>(new InjectionConstructor(new ResolvedParameter<IDataRepository>("First")));
container.RegisterType<ISecondService, SecondService>(new InjectionConstructor(new ResolvedParameter<IDataRepository>("Second")));
当我运行我的应用程序时出现错误:“FirstService没有构造函数接受参数(IDataRepository)。“
我是否还需要指定现在需要注入的IOtherRepository实例,我特别指定了应该注入的IDataRepository实例?还是我在做其他事情?
我的实际构造函数需要6个参数,并且仅仅因为其中一个具有多个实现而必须手动注入每个参数会很痛苦。