2010-02-26 72 views
1

我有一个统一的容器,我内像这样注册类型:团结IOC容器以及如何解决同一接口的不同实例

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

然后我也想注册一个采取ITaxAuthorityRateService 2个不同的服务变量在它们的构造函数中。这两种服务都需要一个从ITaxAuthorityRateService派生出来的不同类。我该如何处理这种情况?

回答

9

好吧我想通了。在注册过程中保持名称相同(“PopulationRate”和“BusinessLicenseRate”)。我所要做的就是每个服务的构造函数中添加属性到ITaxAuthorityRateService参数,像这样:

服务1构造函数的参数:

[Dependency("BusinessLicenseRate")] 
ITaxAuthorityRateService rateService 

客服2构造函数的参数:

[Dependency("PopulationRate")] 
ITaxAuthorityRateService rateService 

然后每个服务都收到了正确的ITaxAuthorityRateService实例。

相关问题