相关疑难解决方法(0)

使用Unity如何将命名依赖项注入构造函数?

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)

有没有办法让我的假代码工作?

c# inversion-of-control unity-container

67
推荐指数
2
解决办法
3万
查看次数

标签 统计

c# ×1

inversion-of-control ×1

unity-container ×1