Con Unity, ¿cómo puedo inyectar una dependencia con nombre en un constructor?
TengoIRespository
registrado dos veces (con nombres) en el siguiente código:
// 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>();
Pero luego cuando quiero resolver esto (para usar elIRepository
) Tengo que hacer una resolución manual como esta:
public ClientModel(IUnityContainer container)
{
this.dataAccess = container.Resolve<IRepository>(Client);
.....
}
Lo que me gustaría hacer es resolverlo en el constructor (al igual queIUnityContainer
). Necesito alguna forma de decir a qué tipo de nombre resolver.
Algo como esto: (NOTA: Código no real)
public ClientModel([NamedDependancy("Client")] IRepository dataAccess)
{
this.dataAccess = dataAccess;
.....
}
¿Hay alguna manera de hacer que mi código falso funcione?