2010-08-26 2 views
1

Глядя на сообщение Карла Сегуина, где он демонстрирует дизайн шоу для проверки, ведет к лучшему дизайну, в данном случае composition over inheritance.Композиция с StructureMap

В примере его CachedEmployeeLookup имеет зависимость от в EmployeeLookup, который как реализовать тот же интерфейс, IEmployeeLookup

Как бы настроить это в StructureMap так, что класс по умолчанию, используемый программой является CachedEmployeeLookup в то время как CachedEmployeeLookup получает в него вводили EmployeeLookup?

ответ

1

Я думаю, что что-то подобное будет работать:

For<IEmployeeLookup>().Add<EmployeeLookup>(). 
    Named("employeeLookup"); 

For<IEmployeeLookup>().Use<CachedEmployeeLookup>() 
    .Ctor<IEmployeeLookup>().Is(
    d => d.TheInstanceNamed("employeeLookup")); 
+0

Oops! Был неправильный объект по умолчанию. Изменен по умолчанию правильный. – PHeiberg

1

Вы можете использовать EnrichWith при настройке отображения типов, например,

ObjectFactory.Initialize(i => 
{ 
    i.For<IDecorator>().Use<Inner>().EnrichWith(d => new Decorator(d)); 
}); 

This page имеет некоторые примеры перехвата в StructureMap

Смежные вопросы