2016-09-06 6 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"),