如果我有一个有很多依赖关系的类,例如:
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以使用除之外的每个依赖项的默认版本?
答案 0 :(得分:0)
这是2.6。
ForConcreteType<ClassWithManyDependencies>()
.Configure.Ctor<IDependencyH>()
.Is<DecoratedDependencyH>();
For<IClassWithManyDependencies>().Use(ctx => ctx.GetInstance<ClassWithManyDependencies>());
我跑了&#34;简化&#34;测试,似乎工作。