我正在使用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。
任何帮助都会非常感激。
答案 0 :(得分:0)
我猜你可能会期望在建筑物中使用Ninject会使new
与正常情况有所不同。它没有 - 您需要为DI启动kernel.Resolve<Something>
。请注意,the wiki
您可以编辑您的答案,以包含您在此表单之外所做的事情的详细信息吗?
与此同时,以下是一些重叠显着的问题: -