C# 在哪里以及如何获得简单的注射器容器?

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

我的应用程序非常简单,DAL和BLL只是同一个Windows窗体应用程序中的文件夹

因此我有一个带有
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: