gpt4 book ai didi

c# - Ninject - (usercontrol) 不包含采用 0 个参数的构造函数

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:13 24 4
gpt4 key购买 nike

您好:我已经成功地将 Ninject 与 MVC 3/4 和 WCF 扩展一起使用。我现在正在尝试使用 WebForms 进行简单的实现,但遇到了挑战。步骤:

  1. 我从 NuGet 下载了 Ninject.Web 并安装到我的 WebForms 项目中
  2. 我编辑了 NinjectWebCommon.cs -> CreateKernel 方法:

            kernel.Bind<ICasePresenter>().To<Presenter.CasePresenter>();
  3. 我编辑了我的用户控件:

    [Inject]
    private ICasePresenter presenter;

    public CaseSummaryControl(ICasePresenter presenter)
    {
    this.presenter = presenter;
    }

我可以看到断点击中了我的绑定(bind),但随后我得到了用户控件不包含采用 0 个参数的构造函数的错误。它没有注入(inject)我的实例(即使我添加了一个没有参数的构造函数,私有(private) var 最终还是 null。

提前致谢!

最佳答案

您正在使用字段注入(inject) 而不是构造函数注入(inject)。只需将 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关于各种注入(inject)模式。

关于c# - Ninject - (usercontrol) 不包含采用 0 个参数的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com