c# – 在基础架构层中使用依赖注入

我在ASP.net Core中创建了一个示例项目使用了四个层,如下所示

c# – 在基础架构层中使用依赖注入

我还在我的API项目中的startup.cs中实现了依赖注入.它的工作完美.

services.AddTransient<IUserRepository, UserRepository>();

我有两个问题要问.

>我的Infrastructure层可以依赖注入,而不是API层吗?如果是的话,你能指导我怎么做吗?
>如果我错了,请纠正我,如果Asp.Net Core默认具有依赖注入,那么我们不需要Autofac(或类似的第三方DI插件).对?让我重新解释一下这个问题.在Asp Core中使用Autofac有什么用?

任何意见将是有益的.

谢谢.

解决方法:

>当然可以.像任何其他DI一样工作.我的例子是:

使用Configure方法为您的Infrastructure层提供一个Config类,该方法需要在其签名中使用IServeCollection,如下所示:

    public static class InfrastructureConfiguration
{
    public static void Configure(IServiceCollection services)
    {

    }
}

您可以从Startup类中的ConfigureServices方法调用此Configure方法.

在配置方法中,您可以连接所需的内容,例如,您可以使用MyAwesomeInfraClass:

    public static class InfrastructureConfiguration
{
    public static void Configure(IServiceCollection services)
    {
       services.AddTransient<MyAwesomeInfraClass>();
    }
}

现在,您可以将MyAwesomeInfraClass注入任何您想要的位置,例如在控制器中,如下所示:

    public class HomeController : Controller
{
     private readonly MyAwesomeInfraClass _myAwesomeInfraClass;

     public HomeController(MyAwesomeInfraClass myAwesomeInfraClass){
       _myAwesomeInfraClass = myAwesomeInfraClass;
     } 
}

>如果.NET Core中的默认容器为您提供了所需的一切,那么您不需要再看了.但我们使用Autofac替换默认容器,然后使用NServiceBus替换Autofac的容器,因为它是在我们的分布式系统*享的容器,因为它具有非常酷的功能,只需扫描程序集并自动注册组件.这是一个例子.这真的取决于你的用例.

上一篇:ASP.NET MVC IOC 之 Autofac(三)-webform中应用


下一篇:c# – ASP.NET Core 2.0使用Autofac注入控制器