2010-02-26 2 views
1

У меня есть единство контейнер, который я регистрирующий типы внутри, как так:контейнер Unity МОК и как решать различные экземпляры одного и того же интерфейса

IUnityContainer container = new UnityContainer() 
.RegisterType<ITaxAuthorityRateService, TaxAuthorityPopulationRateService>("PopulationRate") 
.RegisterType<ITaxAuthorityRateService, TaxAuthorityBusinessLicenseRateService>("BusinessLicenseRate"); 

Тогда я также хочу зарегистрировать 2 различные услуги, которые берут ITaxAuthorityRateService переменной в своем конструкторе. Обеим службам нужен другой класс, который происходит от ITaxAuthorityRateService. Как я могу справиться с этой ситуацией?

ответ

9

Хорошо, я понял. Правильное сохранение имен во время регистрации («PopulationRate» и «BusinessLicenseRate»). Все, что я должен был сделать, это добавить атрибут параметра ITaxAuthorityRateService внутри конструктора каждого сервиса, как так:

Service1 параметр конструктора:

[Dependency("BusinessLicenseRate")] 
ITaxAuthorityRateService rateService 

Service2 параметр конструктора:

[Dependency("PopulationRate")] 
ITaxAuthorityRateService rateService 

А потом каждая служба получила правильный экземпляр ITaxAuthorityRateService.

Смежные вопросы