Как мне добавить именованную зависимость в конструктор с помощью 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>();

Но затем, когда я захочу решить эту проблему (чтобы использовать IRepository ) Мне нужно выполнить ручное разрешение, например следующее:

public ClientModel(IUnityContainer container)
{
   this.dataAccess = container.Resolve<IRepository>(Client);

   .....
}

Я бы хотел разрешить его в конструкторе (точно так же, как IUnityContainer ). Мне нужен способ сказать, в какой именованный тип разрешить.

Примерно так: (ПРИМЕЧАНИЕ: Неверный код)

public ClientModel([NamedDependancy("Client")] IRepository dataAccess)
{
   this.dataAccess = dataAccess;

   .....
}

Есть ли способ заставить мой поддельный код работать?

67
задан BartoszKP 21 December 2018 в 10:37
поделиться