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