寫在前面 之前有個項目是用asp.net webapi做的,pc和移動端共用api的服務介面,balabala,正好最近在看關於asp.net core方面的資料,各種依賴註入,中間件,處理管道等,而且把webapi和mvc融合到了一起,就想著把之前那個項目移到asp.net core上。 由於之前 ...
寫在前面 之前有個項目是用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