2016-09-06 55 views
0

我有两个实现,各需要一组不同的配置数据的同类型的为不同的实现提供相同类型的不同配置?

public ConsumerA(Configuration config) : IConsumerA { ... } 
public ConsumerB(Configuration config) : IConsumerB { ... } 

在我安装,我有温莎解决实现:

container.Register(
    Component.For<IConsumerA>().ImplementedBy<ConsumerA>().LifestyleTransient(), 
    Component.For<IConsumerB>().ImplementedBy<ConsumerB>().LifestyleTransient() 
); 

我怎么能请Windsor根据各自的实现解决配置问题?

回答

0

我最终什么事做了命名的配置和使用的工厂,有点像这样:

Component.For<IConsumerA>().ImplementedBy<ConsumerA>() 
    .DependsOn(Dependency.OnComponent(typeof(Configuration), "configurationA")).LifestyleTransient(), 
Component.For<IConsumerB>().ImplementedBy<ConsumerB>() 
    .DependsOn(Dependency.OnComponent(typeof(Configuration), "configurationB")).LifestyleTransient(), 

Component.For<Configuration>().UsingFactoryMethod(
    k => k.Resolve<ConfigurationFetcher>() 
     .GetConfigurationSection<ConfigurationSection>(ConfigurationSection.ConfigurationASectionName) 
     .GetConfiguration()).Named("configurationA"), 
Component.For<Configuration>().UsingFactoryMethod(
    k => k.Resolve<ConfigurationFetcher>() 
     .GetConfigurationSection<ConfigurationSection>(ConfigurationSection.ConfigurationBSectionName) 
     .GetConfiguration()).Named("configurationB"), 
相关问题