Windows窗体的依赖注入

时间:2015-11-08 22:39:58

标签: c# dependency-injection ninject

我有一个非常简单的C#Windows窗体应用程序,我决定转换为通过Ninject使用依赖注入。

我的应用程序的入口点如下所示:

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

    // initialize dependency injection
    var kernel = new NinjectKernel();
    kernel.ApplyBindings();
    var form = kernel.GetForm();

    Application.Run(form);
}

我的表格看起来像这样:

public partial class MainForm : Form
{
    private readonly ISomething Something;

    public MainForm()
    {
        Something = new Something(this);

        InitializeComponent();
        CreateControl();
        Something.Init();
    }
}

我的问题如下:我想调用“Something”为我的表格做基本的初始化工作(例如加载网格数据,设置标签文本......等)

但是,我只能访问MainForm类中的Form组件。我基本上需要将我的MainForm实例注入“Something”,以便它可以应用修改。

我尝试的内容如下:

public class Something: ISomething
{
    private MainForm Form { get; set; }

    public Something(MainForm form)
    {
          Form = form;
    }

    public void Init()
    {
        Form.Label1.Text = "Change some text!";
    }
}

这似乎有效,但有些东西告诉我这不是正确使用DI。有人可以更明确地使用DI与Windows Forms进行正确的方法吗?

0 个答案:

没有答案