У меня есть 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>();
Но затем, когда я захочу решить эту проблему (чтобы использовать IRepository
) Мне нужно выполнить ручное разрешение, например следующее:
public ClientModel(IUnityContainer container)
{
this.dataAccess = container.Resolve<IRepository>(Client);
.....
}
Я бы хотел разрешить его в конструкторе (точно так же, как IUnityContainer
). Мне нужен способ сказать, в какой именованный тип разрешить.
Примерно так: (ПРИМЕЧАНИЕ: Неверный код)
public ClientModel([NamedDependancy("Client")] IRepository dataAccess)
{
this.dataAccess = dataAccess;
.....
}
Есть ли способ заставить мой поддельный код работать?