【问题标题】:Composition With StructureMap使用 StructureMap 组合
【发布时间】:2010-08-26 22:19:05
【问题描述】:

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

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

您将如何在 StructureMap 中配置它,以便程序使用的默认类是 CachedEmployeeLookup,而 CachedEmployeeLookup 会被注入 EmployeeLookup

【问题讨论】:

    标签: c# structuremap


    【解决方案1】:

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

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

    【讨论】:

    • 糟糕!有错误的默认对象。将默认值更改为正确。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2010-12-17
      • 1970-01-01
      相关资源
      最近更新 更多