C# Ninject:没有匹配的绑定可用,并且该类型不可自绑定

C# Ninject:没有匹配的绑定可用,并且该类型不可自绑定,c#,dependency-injection,ninject,C#,Dependency Injection,Ninject,编辑:问题解决了 这是我的错误消息: Message=激活IValueCalculator时出错没有匹配的绑定 可用,并且该类型不可自绑定。激活路径: 1) 要求使用IValueCalculator 建议: 1) 确保已为IValueCalculator定义绑定 2) 如果绑定是在模块中定义的,请确保模块已加载到内核中 3) 确保没有意外创建多个内核 4) 如果使用构造函数参数,请确保参数名称与构造函数参数名称匹配 5) 如果使用自动模块加载,请确保搜索路径和筛选器正确 扔到这里: IValue

编辑:问题解决了

这是我的错误消息:

Message=激活IValueCalculator时出错没有匹配的绑定 可用,并且该类型不可自绑定。激活路径:
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个建议之一?如果是,怎么办?保罗·科斯塔,你帮我解决了。非常感谢。