asp.net core 抽取Controller到類庫及Autofac自動屬性注入
由於之前的專案是把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