代码之家  ›  专栏  ›  技术社区  ›  Kirschstein

结构图合成

  •  1
  • Kirschstein  · 技术社区  · 15 年前

    看看Karl Seguin的一篇文章,他在文章中展示了为可测试性而设计会带来更好的设计,在这种情况下, composition over inheritance

    在这个例子中,他的 CachedEmployeeLookup EmployeeLookup ,两者实现相同的接口, IEmployeeLookup

    如何在StructureMap中配置它,以便程序使用的默认类是 缓存员工查找 员工查找 注射进去的?

    2 回复  |  直到 15 年前
        1
  •  1
  •   PHeiberg    15 年前

    我想这样的办法行得通:

    For<IEmployeeLookup>().Add<EmployeeLookup>().
       Named("employeeLookup");
    
    For<IEmployeeLookup>().Use<CachedEmployeeLookup>()
      .Ctor<IEmployeeLookup>().Is(
         d => d.TheInstanceNamed("employeeLookup"));
    
        2
  •  1
  •   Lee    15 年前

    EnrichWith 在设置类型映射时,例如。

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

    This page