我IRespository在以下代码中注册了两次(带名字):
// Setup the Client Repository
IOC.Container.RegisterType<ClientEntities>(new InjectionConstructor());
IOC.Container.RegisterType<IRepository, GenericRepository>
("Client", new InjectionConstructor(typeof(ClientEntities)));
// Setup the Customer Repository
IOC.Container.RegisterType<CustomerEntities>(new InjectionConstructor());
IOC.Container.RegisterType<IRepository, GenericRepository>
("Customer", new InjectionConstructor(typeof(CustomerEntities)));
IOC.Container.RegisterType<IClientModel, ClientModel>();
IOC.Container.RegisterType<ICustomerModel, CustomerModel>();
Run Code Online (Sandbox Code Playgroud)
但是当我想要解决这个问题(使用IRepository)时,我必须像这样做一个手动解决方案:
public ClientModel(IUnityContainer container)
{
this.dataAccess = container.Resolve<IRepository>(Client);
.....
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在构造函数中解析它(就像IUnityContainer).我需要一些方法来说明要解析的命名类型.
这样的事情:( 注意:不是真正的代码)
public ClientModel([NamedDependancy("Client")] IRepository dataAccess)
{
this.dataAccess = dataAccess;
.....
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让我的假代码工作?
我特别指的是这个问题: DDD - 如何实施工厂
选定的答案说明:
"工厂不应该依赖于依赖注入,因为域对象不应该将依赖注入到它们中."
我的问题是:无法向您的实体注入依赖项的原因是什么?或者我只是误解了这个陈述?有人可以澄清一下吗?
c# ×1