您好:我已经成功地将Ninject与MVC 3/4和WCF Extensions一起使用。我现在正在尝试使用WebForms进行简单的实现并遇到了挑战。步骤:
我编辑了NinjectWebCommon.cs - > CreateKernel方法:
kernel.Bind<ICasePresenter>().To<Presenter.CasePresenter>();
我编辑了我的用户控件:
[Inject]
private ICasePresenter presenter;
public CaseSummaryControl(ICasePresenter presenter)
{
this.presenter = presenter;
}
我可以看到断点击中了我的绑定,但后来我得到的错误是用户控件不包含带0参数的构造函数。它不是注入我的实例(即使我添加了一个没有参数的构造函数,私有var也最终为null。
提前致谢!
答案 0 :(得分:1)
您正在使用字段注入而不是构造函数注入。只需将Inject
属性移动到构造函数:
private ICasePresenter presenter;
[Inject]
public CaseSummaryControl(ICasePresenter presenter)
{
this.presenter = presenter;
}
或添加不带参数的构造函数:
[Inject]
private ICasePresenter presenter;
public CaseSummaryControl(ICasePresenter presenter)
{
this.presenter = presenter;
}
public CaseSummaryControl()
{
}
这样你可以使用参数保持构造函数以进行单元测试。
缺点是可能需要在使用this.presenter
时添加空值检查,因为您现在有一条路径可以创建CaseSummaryControl
而不用指定ICasePresenter
。
阅读各种注射模式的Ninject documenation。
答案 1 :(得分:0)
ASP.NET Webforms主要支持基于PROPERTY的注入。如果您使用构造函数来定义Injection,那么它只会抛出错误。
以下是您可以按照今天的文档
执行的步骤现在应该自动编译您的应用程序和依赖项。
中看到这些步骤的快照演示