1. 程式人生 > >asp.net core 抽取Controller到類庫及Autofac自動屬性注入

asp.net core 抽取Controller到類庫及Autofac自動屬性注入

寫在前面  之前有個專案是用asp.net webapi做的,pc和移動端共用api的服務介面,balabala,正好最近在看關於asp.net core方面的資料,各種依賴注入,中介軟體,處理管道等,而且把webapi和mvc融合到了一起,就想著把之前那個專案移到asp.net core上。

由於之前的專案是把controller抽離出來了,單獨建了個類庫,而且不止一個Controller類庫,當然還有不止一個的BLL和IBLL以及Entity。怎麼把這麼些東西全部注入到asp.net core 容器裡去呢,自帶的注入容器方式太過繁瑣,而且通過建構函式或者Action引數的方式獲取依賴也不夠清爽。

今天分享的東西就是如果把controller從asp.net core 中抽離,以及通過通過載入類庫程式集的方式,依賴進Autofac容器,然後進行自動的屬性注入。話不多少,直接上乾貨。

1、首先看下demo的結構

 

2、然後通過NuGet引入Autofac.Extensions.DependencyInjection,

3、修改Startup.cs的ConfigureServices方法,讓依賴注入容器改為Autofac

 

另外要在services.AddMvc()的上面加上這句,替換預設的容器;

4、把抽離的controller類庫加入到應用

 我這裡寫了兩個獲取controller和bll程式集的方法

當然如果你的BLL也是多個的話,可以按照命名規則來確定GetFiles的引數格式,如:ApiTest.BLL.*.dll

呼叫MvcBuilder擴充套件方法AddApplicationPart引入controller程式集

當然,如果你抽離的Controller類庫只有一個的話,還可以這麼寫

5、Autofac註冊程式集

 

當然你也可以把紅框內的內容封裝到DefaultModel中,也可以起個別的名字

 

6、測試

UserController同理。

希望上述內容會對你有幫助。

 

參考資料:

https://autofaccn.readthedocs.io/zh/latest/integration/aspnetcore.html

https://www.cnblogs.com/selimsong/p/10047321.html