Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ninject使用多个参数将泛型接口绑定到泛型具体类_C#_Asp.net Web Api_Ninject - Fatal编程技术网

C# Ninject使用多个参数将泛型接口绑定到泛型具体类

C# Ninject使用多个参数将泛型接口绑定到泛型具体类,c#,asp.net-web-api,ninject,C#,Asp.net Web Api,Ninject,这很奇怪,我使用Ninject进行依赖项注入,在将泛型接口绑定到泛型具体类之前,绑定没有问题,如下所示: // * Two below bindings are like many other bindings that are OK Bind<ISupplierAssessmentMarkBiz>() .To<SupplierAssessmentMarkBiz>().InRequestScope(); Bind<ISupplierAssessmentDet

这很奇怪,我使用Ninject进行依赖项注入,在将泛型接口绑定到泛型具体类之前,绑定没有问题,如下所示:

// * Two below bindings are like many other bindings that are OK
Bind<ISupplierAssessmentMarkBiz>()
    .To<SupplierAssessmentMarkBiz>().InRequestScope();
Bind<ISupplierAssessmentDetailBiz>()
    .To<SupplierAssessmentDetailBiz>().InRequestScope();
// * This below binding is problematic
Bind(typeof(IHierarchyEntityBiz<KnowledgeDTO>))
    .To(typeof(HierarchyEntityBiz<Knowledge, KnowledgeDTO>)).InRequestScope();
和在输出窗口中:

'A first chance exception of type 'Ninject.ActivationException' occurred in Ninject.dll'
任何帮助都将不胜感激。

替换

Bind(typeof(IHierarchyEntityBiz<KnowledgeDTO>))
.To(typeof(HierarchyEntityBiz<Knowledge, KnowledgeDTO>)).InRequestScope();
Bind(typeof(IHierarchyEntityBiz))
.To(typeof(HierarchyEntityBiz)).InRequestScope();

Bind()
.To().InRequestScope();
不应更改任何内容,但可能值得一试;-)如果没用,至少要短一点

那么,关于你的问题。 请给我们完整的例外信息。它应该包含激活堆栈,这样我们就可以了解ninject试图实例化
KnowledgeController
的原因


您很可能缺少
AuthenticationService
ikknowledgebiz

的绑定。您确定尝试创建KnowledgeController的是Ninject吗?检查调用堆栈。@EricScherrer:如果有帮助,我会更新答案…正如@BatteryBackupUnit在下面提到的,请包括异常的整个消息,包括激活堆栈。谢谢,如果我从构造函数中删除
IHierarchyEntityBiz knowledgeHierarchyBiz
,依赖关系将得到正确解决,控制器将正常工作。关于调用堆栈,我没有它,因为调试器甚至不会开始调试。我唯一看到的是输出窗口,它显示:
“Ninject.dll中发生了类型为'Ninject.ActivationException'的第一次意外异常”
。然后您应该配置调试器以在发生此类异常时中断。或者为该异常编写一些try-and-catch并在那里访问该异常(或者记录消息)。如果您控制了源代码,则可以访问异常。是否尝试将绑定修改为我建议的绑定?问题是,异常发生在asp.net mvc源代码或ninject源代码(我认为)中,我不知道从何处中断调试器。是的,我修改了装订,还是一样,没有变化。。和
'A first chance exception of type 'Ninject.ActivationException' occurred in Ninject.dll'
Bind(typeof(IHierarchyEntityBiz<KnowledgeDTO>))
.To(typeof(HierarchyEntityBiz<Knowledge, KnowledgeDTO>)).InRequestScope();
Bind<IHierarchyEntityBiz<KnowledgeDTO>>()
.To<HierarchyEntityBiz<Knowledge, KnowledgeDTO>>().InRequestScope();