如何使用ninject di和winforms的无参数构造函数

时间:2012-02-02 16:29:30

标签: winforms constructor ninject

我正在使用ninject进行依赖注入的WinForm应用程序。我的第一个问题是实例化的表单有一个参数(对于DI)。我添加了一个无参数构造函数,认为这会有所帮助。现在的问题是带有参数的构造函数内的代码被跳过。这就是它的样子:

在我的主要表格上:

private void mnuSettings_Click(object sender, System.EventArgs e)
{
   frmSettings objForm = new frmSettings();
   objForm.Owner=this;
   objForm.Show();
}

在frmSettings表单中:

private readonly IApplicationPropertiesInterface _applicationProperties;

public frmSettings()
{
   InitializeComponent();
}

public frmSettings(IApplicationPropertiesInterface applicationProperties) : this()
{
   _applicationProperties = applicationProperties;
}

当我调用_applicationProperties.GetExtractFileSaveLocationDirectory()时,它会爆炸,因为从未调用过设置_applicationProperties的代码。

我想知道我是否错误地构建了这个,以及实现这一目标的最佳方法是什么。我的目标是调用无参数构造函数,但也设置_applicationProperties。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

我猜你可能会期望在建筑物中使用Ninject会使new与正常情况有所不同。它没有 - 您需要为DI启动kernel.Resolve<Something>。请注意,the wiki

中详细介绍了大多数这些陷阱。

您可以编辑您的答案,以包含您在此表单之外所做的事情的详细信息吗?

与此同时,以下是一些重叠显着的问题: -