【发布时间】:2017-10-20 08:54:07
【问题描述】:
我是依赖注入的菜鸟,我按照教程重构了我的代码以使用 Ninject。这就是我所拥有的(简化)。 绑定.cs
public class Bindings : NinjectModule
{
public override void Load()
{
Bind<IConnectionToModbusCreator>().To<ConnectionToModbusCreator>();
Bind<IInputProcessor>().To<InputProcessor>();
}}
程序.cs ;
static class Program
{
[STAThread]
static void Main()
{
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
var InputProcessor = kernel.Get<IInputProcessor>();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1(InputProcessor));
}
这个启动一个form,用户通过点击一个按钮启动程序,这里是Form1:
public partial class Form1 : Form
{
private readonly IInputProcessor _inputProcessor;
public Form1(IInputProcessor inputProcessor)
{ _inputProcessor = inputProcessor;
InitializeComponent();
}
private void Test_Click_1(object sender, EventArgs e)
{
ISequenceController sequenceController = new SequenceController( _inputProcessor)
sequenceController.StartSequence();
}
我的问题是:
这是最好的方法吗?我对必须在构造函数中传递的所有引用感到担心,我尝试使用一个类 Container 来保存实例化对象的变量并将它们用作属性,但我在任何 Ninject 手册中都找不到 sich 方法。
【问题讨论】:
-
您所做的称为构造函数注入,它是首选应用依赖注入的方式。你应该阅读a good book关于这个主题。
-
谢谢,我阅读了很多教程和示例,我有一些代码要交付,甚至不需要注入,但我想利用这个机会制作 dome 好的现代代码。
标签: c# design-patterns dependency-injection constructor ninject