Ninject Window 表单中的实现 - C#

Ninject implementation in Window Forms - C#

我正在使用 Window Forms C# Ninject 版本:2.0.0.1

首先安装了 Ninject 软件包:ninject.extensions.infrastructure.winforms

其次,我使用以下代码创建了新的 class。

public class CustomModule : NinjectModule
{
    public override void Load()
    {
        Bind<IDAL.IORDR>().To<DAL.DAL_ORDR>();
    }
}

我在下面做的window表格中的第三个

public partial class SODetails : Form
{
    public IORDR _IORDR { get; set; }

    [Inject]
    public SODetails(IORDR ORDR)
    {
        _IORDR = ORDR;
    }

    public SODetails()
    {
        InitializeComponent();
    }
}

最后在Program.cs,我做了下面的代码

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    var kernel = new StandardKernel(new CustomModule());
    var form = kernel.Get<SODetails>();
    Application.Run(form);
}

尽管我能够成功注入依赖项,但表单未显示任何控件。我是否以错误的方式执行 Ninject 实施?

我看到了问题。

所以您的 SODetails 表单已启动并且 运行 但它没有显示您在设计器中添加的任何控件。我是对的吗?

问题是未调用 InitializeComponent()。

请更改代码,以便调用默认构造函数,一切正常。 我对构造函数链接的代码做了一个小改动 public SODetails(IORDR ORDR) : this() {....}

public IORDR _IORDR { get; set; }

    [Inject]
    public SODetails(IORDR ORDR) : this()
    {
        _IORDR = ORDR;
    }

    public SODetails()
    {
        InitializeComponent();
    }


    public IORDR _IORDR { get; set; }

    [Inject]
    public SODetails(IORDR ORDR) : this()
    {
        _IORDR = ORDR;
    }

    public SODetails()
    {
        InitializeComponent();
    }

我更改了以下代码

public partial class SODetails : Form
{
    public IORDR _IORDR { get; set; }

    [Inject]
    public SODetails(IORDR ORDR)
    {
        _IORDR = ORDR;
    }

    public SODetails()
    {
        InitializeComponent();
    }
}

public partial class SODetails : Form
{
    public IORDR _IORDR { get; set; }

    [Inject]
    public SODetails(IORDR ORDR)
    {
        _IORDR = ORDR;
        InitializeComponent();
    }

    public SODetails()
    {

InitializeComponent();

    }
}