1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 如何在 ASP.Net Core 中使用 Autofac

如何在 ASP.Net Core 中使用 Autofac

时间:2018-09-22 03:07:58

相关推荐

如何在 ASP.Net Core 中使用 Autofac

依赖注入可以有效的实现对象之间的松耦合并能够实现代码的可测试和可维护性, Core 提供了一个极简版的容器实现对依赖注入的原生支持,然而内置的依赖注入容器相比成熟的依赖注入容器太弱了。

为了解决这个问题,可以使用第三方的依赖注入容器,换句话说,你可以非常方便的使用第三方容器替换原生容器, Autofac 就是这么一款优秀的依赖注入容器,这篇文章我们将会讨论如何在 Core 中使用 Autofac。

安装 Autofac

安装 Autofac 非常简单,要么通过 Nuget 可视化界面进行安装。

要么在 NuGet Package Manager Console 命令行中输入如下命令。

Install-PackageAutofacInstall-PackageAutofac.Extensions.DependencyInjection

创建注入类

为了能更好的解释依赖注入,考虑下面的IAuthorRepository接口,它包含了一个GetMessage()方法。

publicinterfaceIAuthorRepository{stringGetMessage();}

接下来创建一个实现 IAuthorRepository 接口的 AuthorRepository 子类,如下代码所示:

publicclassAuthorRepository:IAuthorRepository{publicstringGetMessage(){return"HelloWorld";}}

哈哈,上面就是一个极简版的仓储模式,目前还没有典型仓储模式有拥有的 CURD 方法,大家有兴趣可以补起来。

配置 Autofac

为了能够配置 Autofac,可以在Startup.ConfigureServices()方法中进行配置,大概分为以下两部分。

创建 container 容器,将 service 注入到里面

可以使用 Autofac 框架提供的Populate()方法将 services 灌入到 container 中,如下代码所示:

varcontainerBuilder=newContainerBuilder();containerBuilder.Populate(services);

将自定义的类注入到 Container 中

这个实现就简单了,通过RegisterType()方法将自定义的类注入到 Autofac 容器中,如下代码所示:

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

然后构建 container 容器,如下代码所示:

varcontainer=containerBuilder.Build();returncontainer.Resolve<IServiceProvider>();

接下来是ConfigureServices()方法的完整代码,仅供参考。

publicIServiceProviderConfigureServices(IServiceCollectionservices){services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);varcontainerBuilder=newContainerBuilder();containerBuilder.Populate(services);containerBuilder.RegisterType<AuthorRepository>().As<IAuthorRepository>();varcontainer=containerBuilder.Build();returncontainer.Resolve<IServiceProvider>();}

在 Controller 中使用 Autofac

一切都配置好之后,接下来可以在 Controller 中实现注入,如下代码所示:

[Route("api/[controller]")][ApiController]publicclassValuesController:ControllerBase{privateIAuthorRepository_authorRepository;publicValuesController(IAuthorRepositoryauthorRepository){_authorRepository=authorRepository;}[HttpGet]publicActionResult<string>Get(){return_authorRepository.GetMessage();}}

依赖注入 是 控制反转 的一种实现方法,它的一大特点在于在外部统一管理对象之间的依赖关系从而解除代码内部之间的依赖关系,正如 Autofac 这样的 IOC 容器利用了控制反转实现了对象的自动初始化和对象的生命周期管理。

依赖注入有三种方式:

构造函数注入

接口注入

属性注入

显而易见,在本篇中我用的是构造函数注入

我们已经看到了如何在 Core 中使用 Autofac 替换默认的 Container ,但我们不能仅仅停留在简单使用上,更多深度的用法我会在后面的文章中和大家一起聊。

译文链接:/article/3397077/how-to-use-autofac-in-aspnet-core.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。