小编Seb*_*cia的帖子

在C#控制台应用程序中正确使用Autofac

我是新用的Autofac,所以我为noob问题道歉.我阅读了互联网上的每本手册,解释了使用Autofac(或任何其他工具,如Structuremap,Unity等)时的基本知识.但我发现的所有例子都是基础知识.我需要知道如何在我的代码中更深入地实现Autofac.让我试着解释一下我需要知道的这个例子,一个控制台应用程序.

class Program
{
    static void Main(string[] args)
    {
        var container = BuildContainer();
        var employeeService = container.Resolve<EmployeeService>();
        Employee employee = new Employee
        {
            EmployeeId = 1,
            FirstName = "Peter",
            LastName = "Parker",
            Designation = "Photographer"
        };

        employeeService.Print(employee);
    }

    static IContainer BuildContainer()
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<EmployeeRepository>().As<IEmployeeRepository>();
        builder.RegisterType<EmployeeService>();
        return builder.Build();
    }
}
Run Code Online (Sandbox Code Playgroud)

这很简单.我想弄清楚的是当你深入研究代码时如何实现这一点.在此示例中,执行此行时

employeeService.Print(employee);
Run Code Online (Sandbox Code Playgroud)

让我们假设"Print"方法有点复杂,需要使用其他依赖项/类来完成他的任务.我们仍在使用Autofac,所以我想我们需要像上面的例子那样创建依赖项.那是对的吗?在我的"print"方法中,当我需要使用另一个类时,我必须创建另一个容器,填充它,与Resolve()一起使用它等等?有一种更简单的方法吗?在所有解决方案中都可以使用具有所需所有依赖关系的静态类?怎么样?我希望能够清楚.也许我无法表达我的需要.:(抱歉我的英语很差.我在学习Autofac时仍在学习它.

c# dependency-injection inversion-of-control autofac

8
推荐指数
1
解决办法
7729
查看次数