C# 在哪里以及如何获得简单的注射器容器?
我的应用程序非常简单,DAL和BLL只是同一个Windows窗体应用程序中的文件夹 因此我有一个带有C# 在哪里以及如何获得简单的注射器容器?,c#,dependency-injection,inversion-of-control,simple-injector,C#,Dependency Injection,Inversion Of Control,Simple Injector,我的应用程序非常简单,DAL和BLL只是同一个Windows窗体应用程序中的文件夹 因此我有一个带有Processar()方法的Processador类,这个类在构造函数中接收它的依赖项(两个存储库),检查它 private IFilaRepositorio _repo; public Processador(IFilaRepositorio filaRepo) { _repo = filaRepo; } public void Processar() { } 我的类在Program
Processar()
方法的Processador
类,这个类在构造函数中接收它的依赖项(两个存储库),检查它
private IFilaRepositorio _repo;
public Processador(IFilaRepositorio filaRepo)
{
_repo = filaRepo;
}
public void Processar()
{
}
我的类在Program.cs中注册,我创建了新的Form(),将new按钮拖到其中,双击编程事件,尝试实例化我的Processador
类,它向我询问构造函数参数。如何传递这些论点?我需要从简单的注射器容器里拿出来?如果是这样,如何将简单的注射器放入容器中?以下是我结巴的要点
private void button1_Click(object sender, EventArgs e)
{
Processador proc = new Processador(???); <-- Dont know how to pass the arguments
proc.Processar();
}
private void按钮1\u单击(对象发送者,事件参数e)
{
Processador proc=new Processador(??);IoC的概念是,您不需要在整个应用程序中再实例化对象。容器为您管理这些对象。因此,您不需要再使用“new”(对于由容器管理的类)。因为如果您使用“new”,我们会添加一个额外的依赖项,这正是我们在IoC中试图避免的
在您的情况下:您的Processador只应由容器实例化。因此,您不应在buttonhandler中实例化它。为此,您需要确保Processador所需的参数也由容器管理。例如,如果Processador的签名如下所示:
Processador(NameFactory nameFactory, FileManager filemanager);
您需要将NameFactory和FileManager添加到容器中
然后,您可以从容器中检索Processador的实例
container.GetInstance<IProcessador>();
container.GetInstance();
尽管建议通过构造函数注入或属性注入来实现这一点
如果您想更好地了解IoC和依赖注入,Miquel Casto的这段视频可能会让您感兴趣:
Miquel Castro多年来一直在提供有关DI的课程(他还使用代码示例)
我希望这能部分回答您的问题。RTM: