Композиция с StructureMap - PullRequest
       2

Композиция с StructureMap

1 голос
/ 26 августа 2010

Посмотрев на пост Карла Сегуина, где он показывает шоу-проектирование для тестируемости, приводит к лучшему дизайну, в данном случае, композиция над наследованием .

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

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

Ответы [ 2 ]

1 голос
/ 26 августа 2010

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

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

Эта страница содержит несколько примеров перехвата в StructureMap

1 голос
/ 26 августа 2010

Я думаю, что-то вроде этого будет работать:

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

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