Hor*_*oma 2 dependency-injection ninject
我正在使用Ninject模块将不同类型绑定到相应的接口.
注入将在类的构造函数中进行.问题是该类有另一个带有签名的构造函数,包括Func.
Ninject很困惑,并把它扔向我:
使用ClassTest的隐式自绑定激活ClassTest时出错.几个构造函数具有相同的优先级.请使用ToConstructor语法指定构造函数或添加Inject属性.
请参阅下文如何完成绑定以及如何进行注射:
this.Bind<InterfaceA>().To<ClassA>();
...
public class ClassTest
{
public ClassTest(InterfaceA a)
{
}
public ClassTest(Func<ClassB> funcB)
{
}
}
...
var giveMeTest = kernel.Get<ClassTest>(); // exception thrown
}
Run Code Online (Sandbox Code Playgroud)
看来Func是罪魁祸首,你能解释一下为什么Ninject会感到困惑吗?
谢谢
最好删除所有未使用的构造函数.没有理由添加从未使用过的构造函数.如果你真的需要多个构造函数,那么你必须告诉Ninject要选择哪一个,例如:
Bind<ClassTest>().ToConstructor(x => new ClassTest(x.Inject<InterfaceA>())).Named("A");
Bind<ClassTest>().ToConstructor(x => new ClassTest(x.Inject<Func<ClassB>>())).Named("B");
kernel.Get<ClassTest>("A");
kernel.Get<ClassTest>("B");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3591 次 |
| 最近记录: |