C# Ninject:没有匹配的绑定可用,并且该类型不可自绑定
编辑:问题解决了 这是我的错误消息: Message=激活IValueCalculator时出错没有匹配的绑定 可用,并且该类型不可自绑定。激活路径:C# Ninject:没有匹配的绑定可用,并且该类型不可自绑定,c#,dependency-injection,ninject,C#,Dependency Injection,Ninject,编辑:问题解决了 这是我的错误消息: Message=激活IValueCalculator时出错没有匹配的绑定 可用,并且该类型不可自绑定。激活路径: 1) 要求使用IValueCalculator 建议: 1) 确保已为IValueCalculator定义绑定 2) 如果绑定是在模块中定义的,请确保模块已加载到内核中 3) 确保没有意外创建多个内核 4) 如果使用构造函数参数,请确保参数名称与构造函数参数名称匹配 5) 如果使用自动模块加载,请确保搜索路径和筛选器正确 扔到这里: IValue
1) 要求使用IValueCalculator 建议: 1) 确保已为IValueCalculator定义绑定 2) 如果绑定是在模块中定义的,请确保模块已加载到内核中 3) 确保没有意外创建多个内核 4) 如果使用构造函数参数,请确保参数名称与构造函数参数名称匹配 5) 如果使用自动模块加载,请确保搜索路径和筛选器正确 扔到这里:
IValueCalculator calc = ninjectKernel.Get<IValueCalculator>();
IValueCalculator calc=ninjectKernel.Get();
这是我的装订:
kernel.Bind<IValueCalculator>().To<LinqValueCalculator>();
kernel.Bind().To();
我发现这个问题是这样的,但它对我没有帮助(对吗?):
有什么想法吗?我同样面临同样的问题,我发现这是因为使用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>();
}
}
。。。。
var kernel=新的标准内核();
新的NinjectDI(kernel.Load();
Load(Assembly.getExecutionGassembly());
IValueCalculator calc=ninjectKernel.Get();
...
类NinjectDI:NinjectModule
{
标准内核;
公共NinjectDI(标准内核)
{
this.kernel=内核;
}
公共覆盖无效负载()
{
kernel.Bind().To();
}
}
注意:
确保您没有意外创建多个内核。
对于我来说,我试图绑定的类具有注入依赖性
确保您试图绑定的类所需的所有内容都被引用。变量ninjectKernel和kernel引用同一个对象吗?您是否确实检查过它不是5个建议之一?如果是,怎么办?保罗·科斯塔,你帮我解决了。非常感谢。