C# Ninject使用多个参数将泛型接口绑定到泛型具体类
这很奇怪,我使用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
// * 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();