编辑:问题已解决
这是我的错误消息:
消息=激活IValueCalculator时出错没有匹配的绑定 可用,并且类型不可自我绑定。激活路径:
1)请求IValueCalculator建议:
1)确保您已为IValueCalculator定义了一个绑定。
2)如果在模块中定义了绑定,请确保已将模块加载到内核中。
3)确保您没有意外创建多个内核。
4)如果使用构造函数参数,请确保参数名称与构造函数参数名称匹配。
5)如果使用自动模块加载,请确保搜索路径和过滤器正确无误。
抛在这里:
IValueCalculator calc = ninjectKernel.Get<IValueCalculator>();
这是我的约束力:
kernel.Bind<IValueCalculator>().To<LinqValueCalculator>();
我在SO上发现了这个问题,但它没有帮助我(对吧?): Ninject WithConstructorArgument : No matching bindings are available, and the type is not self-bindable
有什么想法吗?
答案 0 :(得分:2)
我同样面临同样的问题,我发现这是因为你使用bind方法传递的内核实例没有初始化。
我把代码请参考。
....
var kernel = new StandardKernel();
new NinjectDI(kernel).Load();
kernel.Load(Assembly.GetExecutingAssembly());
IValueCalculator calc = ninjectKernel.Get<IValueCalculator>();
...
class NinjectDI : NinjectModule
{
StandardKernel kernel;
public NinjectDI(StandardKernel kernel)
{
this.kernel = kernel;
}
public override void Load()
{
kernel.Bind<IValueCalculator>().To<LinqValueCalculator>();
}
}
注意: Ensure you have not accidentally created more than one kernel.
答案 1 :(得分:0)
对我来说,我要绑定的类具有注入依赖性。
确保您要绑定的类所需的所有内容均已引用。