A. Простой вопрос.
У меня есть 3 экземпляра «Репозитория», который зависит от «Конфигурации».
class Manager{
public Manager(Configuration conf){
...
Стратегии разрешения для 3 экземпляров:
container.RegisterType<Repository>("ForService1");
container.RegisterType<Repository>("ForService2");
container.RegisterType<Repository>("ForService3");
(три из-за того, что они имеют дополнительные параметры, которые не включены в выборку, параметры, которые всегда различаются)
и конфигурация по умолчанию
container.RegisterType<Configuration>(new InjectionConstructor(new object[] { false, true }));
Я хочу предоставить возможность переопределить конфигурацию в файле конфигурации для одного и только одного экземпляра.
<register type="Configuration"
name="**ForService2**">
<constructor>
<param name = "useOptimization1" value="True"/>
<param name = "useOptimization2" value="True"/>
</constructor>
</register>
И вы хотите, чтобы в расширении не было тройной конфигурации, например:
container.RegisterType<Configuration>("ForService1", new InjectionConstructor(new object[] { false, true }));
container.RegisterType<Configuration>("ForService1", new InjectionConstructor(new object[] { false, true }));
container.RegisterType<Configuration>("ForService2", new InjectionConstructor(new object[] { false, true }));
Возможно ли это? Как?
B. Сложный вопрос.
У меня такое ощущение, что инструмент IoC не о конфигурации. Попытка настроить инфраструктуру, выбросить конфигурационный файл IoC - это еще один антипаттерн. Или короче: «Данные о конфигурации не являются зависимостью». Я прав?
Давайте рассмотрим конфигурацию списков EntLib.
Действительно, конфигурация приемника журнала EntLib является «поздним связыванием» или «способом конфигурации»? Во-первых, это «поздняя привязка» (так как мы указываем имя типа - какую сборку на loas и объект для создания), а также это «конфигурация» (у нас есть пользовательский раздел конфигурации). Я чувствую, что большинство последователей IoC выберут включенную «конфигурацию» контейнера, я прав?
Но ребята из EntLib выбирают раздел конфигурации.
Может быть, этот пользовательский раздел конфигурации для конфигурации прослушивателя журнала изменит конфигурацию контейнера, и как «конфигурация прослушивателя» должна быть связана с конфигурацией контейнера?