СтруктураКарта и фасады - PullRequest
0 голосов
/ 09 июня 2011

Я думаю об определении фасада для части приложения, которая возвращается контейнером IoC, в моем случае StructureMap.Фасад имеет конструктор без аргументов, который устанавливает реализации по умолчанию, и еще один, так что я могу определить пользовательские реализации различных объектов подсистемы, которыми управляет фасад.

Однако, поскольку StructureMap пытается создать экземплярФасад, вызывающий конструктор с наибольшим количеством аргументов, завершается неудачей, если не зарегистрирована реализация других подсистем.

Мой вопрос: есть ли способ сообщить StructureMap, чтобы он попытался использовать следующий конструктор в строке, если он не может использоватьосновной?Или я должен сказать StructureMap, какой конструктор выбрать?

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Вы можете указать делегата, который будет создавать ваш тип следующим образом:

container.Configure(r => r.For<IFacade>().Use(() => new RealFacade()));
1 голос
/ 09 июня 2011

Насколько я знаю, невозможно, чтобы StructureMap пытался разрешить экземпляр и использовать альтернативные операторы, если не справится с самыми жадными.

Я думаю, что было бы неплохо подключитьЗависимости фасада также используют StructureMap и задают значения по умолчанию.Возможно, можно использовать реализацию объекта Null по умолчанию для подсистем, которые могут отсутствовать.

...