日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何在 ASP.Net Core 中使用 Autofac

發布時間:2023/12/4 asp.net 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 ASP.Net Core 中使用 Autofac 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

依賴注入可以有效的實現對象之間的 松耦合 并能夠實現代碼的可測試和可維護性,ASP.Net Core 提供了一個極簡版的容器實現對 依賴注入 的原生支持,然而內置的依賴注入容器相比成熟的 依賴注入容器 太弱了。

為了解決這個問題,可以使用第三方的依賴注入容器,換句話說,你可以非常方便的使用 第三方容器 替換 原生容器, Autofac 就是這么一款優秀的依賴注入容器,這篇文章我們將會討論如何在 ASP.Net Core 中使用 Autofac。

安裝 Autofac

安裝 Autofac 非常簡單,要么通過 Nuget 可視化界面進行安裝。

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

Install-Package?Autofac? Install-Package?Autofac.Extensions.DependencyInjection

創建注入類

為了能更好的解釋依賴注入,考慮下面的 IAuthorRepository 接口,它包含了一個 GetMessage() 方法。

public?interface?IAuthorRepository{string?GetMessage();}

接下來創建一個實現 IAuthorRepository 接口的 AuthorRepository 子類,如下代碼所示:

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

哈哈,上面就是一個極簡版的 倉儲模式 ,目前還沒有典型倉儲模式有擁有的 CURD 方法,大家有興趣可以補起來。

配置 Autofac

為了能夠配置 Autofac,可以在 Startup.ConfigureServices() 方法中進行配置,大概分為以下兩部分。

  • 創建 container 容器,將 service 注入到里面

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

var?containerBuilder?=?new?ContainerBuilder();containerBuilder.Populate(services);
  • 將自定義的類注入到 Container 中

這個實現就簡單了,通過 RegisterType() 方法將自定義的類注入到 Autofac 容器中,如下代碼所示:

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

然后構建 container 容器,如下代碼所示:

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

接下來是 ConfigureServices() 方法的完整代碼,僅供參考。

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

在 Controller 中使用 Autofac

一切都配置好之后,接下來可以在 Controller 中實現注入,如下代碼所示:

[Route("api/[controller]")][ApiController]public?class?ValuesController?:?ControllerBase{private?IAuthorRepository?_authorRepository;public?ValuesController(IAuthorRepository?authorRepository){_authorRepository?=?authorRepository;}[HttpGet]public?ActionResult<string>?Get(){return?_authorRepository.GetMessage();}}

依賴注入 是 控制反轉 的一種實現方法,它的一大特點在于在外部統一管理對象之間的依賴關系從而解除代碼內部之間的依賴關系,正如 Autofac 這樣的 IOC 容器利用了控制反轉實現了對象的自動初始化和對象的生命周期管理。

依賴注入有三種方式:

  • 構造函數注入

  • 接口注入

  • 屬性注入

顯而易見,在本篇中我用的是 構造函數注入。

我們已經看到了如何在 ASP.Net Core 中使用 Autofac 替換默認的 Container ,但我們不能僅僅停留在簡單使用上,更多深度的用法我會在后面的文章中和大家一起聊。

譯文鏈接:https://www.infoworld.com/article/3397077/how-to-use-autofac-in-aspnet-core.html

總結

以上是生活随笔為你收集整理的如何在 ASP.Net Core 中使用 Autofac的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。