structuremap配置只替换1个依赖项

时间:2014-07-31 14:28:57

标签: structuremap

如果我有一个有很多依赖关系的类,例如:

public ClassWithManyDependencies(IDependencyA a, IDependencyB b, 
                                 IDependencyC c, IDependencyD d, 
                                 IDependencyE e, IDependencyF f, 
                                 IDependencyG g, IDependencyH h): IClassWithManyDependencies

{
    // constructor code...
}

当我想注入一个只有一个的依赖项(比如 IDependencyH )时 - 我希望依赖其他类中的IDependencyH来使用默认实现 - 我目前正在这样做:

var specialVersionH = new DecoratedDependencyH();

For<IClassWithManyDependencies>().Use(c => new ClassWithManyDependencies(
    c.GetInstance<IDependencyA>(),
    c.GetInstance<IDependencyB>(),
    c.GetInstance<IDependencyC>(),
    c.GetInstance<IDependencyD>(),
    c.GetInstance<IDependencyE>(),
    c.GetInstance<IDependencyF>(),
    c.GetInstance<IDependencyG>(),
    specialVersionH));

是否有更简洁的方法来配置structuremap以使用除之外的每个依赖项的默认版本?

1 个答案:

答案 0 :(得分:0)

这是2.6。

ForConcreteType<ClassWithManyDependencies>()
  .Configure.Ctor<IDependencyH>()
  .Is<DecoratedDependencyH>();
For<IClassWithManyDependencies>().Use(ctx => ctx.GetInstance<ClassWithManyDependencies>());

我跑了&#34;简化&#34;测试,似乎工作。