【朝夕技术专刊】Core3.1WebApi_Filter多种注册方式支持依赖注入
歡迎大家閱讀《朝夕Net社區(qū)技術(shù)專刊》第5期
我們致力于.NetCore的推廣和落地,為更好的幫助大家學(xué)習(xí),方便分享干貨,特創(chuàng)此刊!很高興你能成為忠實(shí)讀者,文末福利不要錯(cuò)過哦!
01
PART
CoreFilter多種注冊(cè)方式
在上一篇的文章中;定義的幾個(gè)Filter,在截圖看到了有帶參數(shù)ILoggerFactory loggerFactory的;而且在執(zhí)行的時(shí)候,在控制器方法中直接用中括號(hào)標(biāo)記注冊(cè)Filters是無法傳遞ILoggerFactory參數(shù)的,那如何讓Filter注冊(cè)可以支持帶參數(shù)的構(gòu)造函數(shù)呢?還有其他幾種注冊(cè)方式,可以支持傳遞參數(shù)、其實(shí)是通過IOC依賴注入進(jìn)去的參數(shù);?
一.直接通過特性標(biāo)記在方法和控制器,看圖1,圖2;定義的Filter必須擁有無參數(shù)構(gòu)造函數(shù);不能傳遞參數(shù)。
圖1:僅僅只是對(duì)當(dāng)前方法生效
圖2:對(duì)當(dāng)前:控制器生效
二.如果需要傳遞參數(shù)怎么辦呢?,通過TypeFilter標(biāo)記在方法和控制器,看圖3,圖4;定義的Filter中可以不擁有無參數(shù)構(gòu)造函數(shù);且只能有一個(gè)合適的構(gòu)造函數(shù)。
圖3
圖4
三.除了通過TypeFilter注冊(cè)可以注入?yún)?shù);還可以通過ServiceFilter (還要在ConfigureService中標(biāo)記)標(biāo)記在方法和控制器,看圖5,圖6;定義的Filter中可以不擁有無參數(shù)構(gòu)造函數(shù);且只能有一個(gè)合適的構(gòu)造函數(shù)。
ConfigureService注冊(cè)服務(wù):
使用TypeFilter 注冊(cè)Filter 需要在ConfigureService中注冊(cè)服務(wù);
圖5
圖6
其實(shí)TypeFilter和ServiceFilter都是實(shí)現(xiàn)IFilterFactory接口通過CreateInstance方法創(chuàng)建的Filter實(shí)例,此處也可以擴(kuò)展定制創(chuàng)建;詳情可聯(lián)系助教老師(微信:ZhaoxiNet007)獲取
四.全局注冊(cè):直接上代碼,看圖7,定義的Filter中可以不擁有無參數(shù)構(gòu)造函數(shù);且只能有一個(gè)合適的構(gòu)造函數(shù).全局注冊(cè)以后,整個(gè)項(xiàng)目中都會(huì)生效;
圖7
那么上面說了,TypeFilter和ServiceFilter 都是實(shí)現(xiàn)了IFilterFactory接口來實(shí)現(xiàn)的;那是不是可以自定義擴(kuò)展一個(gè)呢? 當(dāng)然OK?的;如圖8
圖8
圖9
圖10
自定義CustomIOCFilterFactory 特性來注冊(cè)Filter支持依賴注入;其實(shí)都是實(shí)現(xiàn)自IFilterFactory 接口;
下期預(yù)告
【朝夕Net社區(qū)技術(shù)專刊】第6期:
WebApi_Filter-Authorize授權(quán)鑒權(quán)詳解
總結(jié)
以上是生活随笔為你收集整理的【朝夕技术专刊】Core3.1WebApi_Filter多种注册方式支持依赖注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个全栈式的应用集成平台,打破“信息孤岛
- 下一篇: opencv +数字识别