Structuremap配置只替换1个依赖项



如果我有一个类有很多依赖项,例如:

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,以使用每个依赖项的默认版本,除了指定的一个?

这是2.6版本。

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

我进行了一个"简化"测试,似乎有效。

最新更新