问题
I have a unity container that I am registering types within like so:
IUnityContainer container = new UnityContainer()
.RegisterType<ITaxAuthorityRateService, TaxAuthorityPopulationRateService>( "PopulationRate" )
.RegisterType<ITaxAuthorityRateService, TaxAuthorityBusinessLicenseRateService>( "BusinessLicenseRate" );
Then I also want to register 2 different services that take a ITaxAuthorityRateService variable in their constructor. Both services need a different class that derives from ITaxAuthorityRateService. How can I handle that situation?
回答1:
Ok I figured it out. Keeping the names the same during registration is correct ("PopulationRate" and "BusinessLicenseRate"). All I had to do was add an attribute to the ITaxAuthorityRateService parameter within the constructor of each service like so:
Service1 constructor parameter:
[Dependency( "BusinessLicenseRate" )]
ITaxAuthorityRateService rateService
Service2 constructor parameter:
[Dependency( "PopulationRate" )]
ITaxAuthorityRateService rateService
And then each service received the correct ITaxAuthorityRateService instance.
来源:https://stackoverflow.com/questions/2343532/unity-ioc-container-and-how-to-resolve-different-instances-of-the-same-interface