我有一个非常简单的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进行正确的方法吗?