如何在ASP.Net Core中使用Autofac

依赖注入有利于松耦合,并提高可测试性和维护性。 ASP.Net Core使用简约的依赖项注入容器为依赖项注入 (控件的一种转换)提供内置支持 。 但是,内置容器缺少完整的依赖项注入或控制容器反转的许多功能。

为解决此问题,可以在ASP.Net Core中使用第三方容器。 换句话说,您可以轻松地用第三方容器替换内置容器。 Autofac是控件容器的反转版本,可用于解决依赖关系。 本文讨论了如何在ASP.Net Core中使用Autofac。

[Microsoft .Net 5将.Net Framework和.Net Core结合在一起:了解.Net Standard和.Net Core的合并对开发人员意味着什么 | 从InfoWorld的Microsoft Architect博客中了解如何从.Net Framework和.Net Core中获得最大收益。 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

在Visual Studio中创建一个ASP.Net Core项目

首先,让我们在Visual Studio中创建一个ASP.Net Core项目。 假设系统中已安装Visual Studio 2017或Visual Studio 2019,请按照以下概述的步骤在Visual Studio中创建新的ASP.Net Core项目。

  1. 启动Visual Studio IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,从显示的模板列表中选择“ ASP.Net Core Web应用程序”。
  4. 点击下一步。
  5. 在“配置新项目”窗口中,指定新项目的名称和位置。
  6. 单击创建。
  7. 在“创建新的ASP.Net Core Web应用程序”窗口中,从顶部的下拉列表中选择.Net Core作为运行时,并选择ASP.Net Core 2.2(或更高版本)。
  8. 选择“ Web应用程序”作为项目模板。
  9. 确保未选中“启用Docker支持”和“配置HTTPS”复选框,因为我们此处将不再使用这些功能。
  10. 确保将身份验证设置为“无身份验证”,因为我们也不会使用身份验证。
  11. 单击创建。

这将在Visual Studio中创建一个新的ASP.Net Core项目。 在本文的后续部分中,我们将使用该项目来使用Autofac。

在您的ASP.Net Core项目中安装Autofac

Autofac的安装非常简单–您可以从NuGet进行安装。 在撰写本文时,Autofac的当前版本是4.9.2。 要使用Autofac,还应该安装Autofac.Extensions.DependencyInjection包。 这将确保您安装了用于使用Autofac所必需的依赖项。

选择上面创建的ASP.Net Core Web应用程序项目,然后右键单击并通过NuGet软件包管理器安装Autofac.Extensions.DependencyInjection。 接受安装过程中可能会提示您的任何许可协议。 或者,您可以通过在NuGet软件包管理器控制台中输入以下命令来安装此软件包:

Install-Package Autofac.Extensions.DependencyInjection

在ASP.Net Core应用程序中创建一个类

为了说明依赖注入,我们将需要一些对象。 考虑包含下面的GetMessage方法的声明的IAuthorRepository接口。

 public interface IAuthorRepository
    {
        string GetMessage();
    }

AuthorRepository类实现IAuthorRepository接口,如下所示。

 public class AuthorRepository : IAuthorRepository
    {
        public string GetMessage()
        {
            return "Hello World";
        }
    }

请注意,这是存储库的简约实现-即,它不包含典型存储库包含的CRUD方法。 我将留给您适当地实现CRUD方法。

在ASP.Net Core中配置Autofac

若要配置Autofac,应在Startup类的ConfigureServices方法中指定配置代码。 请注意,ConfigureServices方法用于在运行时将服务添加到容器。

第一步是创建一个容器构建器,以向Autofac容器注册必要的服务。 第一步是使用Populate方法填充框架服务,如下所示。

var containerBuilder = new ContainerBuilder();
containerBuilder.Populate(services);

下一步是向Autofac注册自定义服务。 为此,请在容器构建器实例上使用RegisterType方法,如下所示。

containerBuilder.RegisterType<AuthorRepository>().As<IAuthorRepository>();

要构建容器,请编写以下代码。

var container = containerBuilder.Build();
return container.Resolve<IServiceProvider>();

这是ConfigureServices方法的完整源代码供您参考:

public IServiceProvider ConfigureServices(IServiceCollection services)
   {
       services.AddMvc();
       var containerBuilder = new ContainerBuilder();
       containerBuilder.Populate(services);
       containerBuilder.RegisterType<AuthorRepository>().
       As<IAuthorRepository>();
       var container = containerBuilder.Build();
       return container.Resolve<IServiceProvider>();
   }

在ASP.Net Core中的控制器中使用Autofac

既然已经在您的项目中安装并配置了Autofac,您就可以开始在控制器中使用它了。 以下代码段说明了如何解析ValuesController中的依赖关系。

  public class ValuesController : ControllerBase
  {
        private IAuthorRepository _authorRepository; 
        public ValuesController(IAuthorRepository authorRepository) 
        {
            _authorRepository = authorRepository;
        }         // GET api/values
        [HttpGet]
        public ActionResult<string> Get()
        {
            return _authorRepository.GetMessage();
        }
     //Other action methods
  }

依赖注入原理是控制原理反转的一种实现。 通过允许您从外部注入这些依赖关系,该技术可从实现中删除依赖关系。 诸如Autofac之类的控件容器的倒置利用依赖注入来倒置控制流,并帮助自动化对象的实例化和生命周期管理。

依赖注入采用三种形式:构造函数注入,接口注入和属性注入。 在此示例中,我们使用构造函数注入在运行时在ValuesController类中注入依赖项(即AuthorRepository类型的实例)。

我们已经了解了如何使用Autofac替换ASP.Net Core中的默认依赖项注入容器,但是我们仅涉及其功能的表面。 在以后的文章中,我将更深入地探讨Autofac。

From: https://www.infoworld.com/article/3397077/how-to-use-autofac-in-aspnet-core.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值