与StructureMap的构成

时间:2010-08-26 13:50:04

标签: c# structuremap

在Karl Seguin的一篇文章中,他展示了可测试性的设计导致了更好的设计,在这种情况下,composition over inheritance

在示例中,他的CachedEmployeeLookup依赖于EmployeeLookup,它们都实现了相同的界面IEmployeeLookup

如何在StructureMap中配置它,以便程序使用的默认类为CachedEmployeeLookupCachedEmployeeLookup注入EmployeeLookup

2 个答案:

答案 0 :(得分:1)

我认为这样的事情会起作用:

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

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

答案 1 :(得分:1)

您可以在设置类型映射时使用EnrichWith,例如

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

This page在StructureMap中有一些拦截的例子