【朝夕技术专刊】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授权鉴权详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL(一)- 数据库介绍与基础操作

数据库介绍 一、常用的数据库分为两大类: 关系型数据库非关系型数据库(NoSql) 关系型数据库 概念:是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 关系型数据库的优势&am…

最少硬币问题-dp

题目: 有5种硬币,面值分别为:1,5,10,25,50。数量无限,输入非负整数s,选用硬币,使其和为s。要求输出最少的硬币组合要多少个硬币? 数据范围: s最大为250. 解题思路: 有时…

python加密与解密_Python加密与解密,pythonCrypt,和

from Crypto.Cipher import AESclass DeAesCrypt:"""AES-128-CBC 加/解密, Padding ZERO模式"""def __init__(self, data, key, pad):""":param data: 加密后的字符串,或者需要加密的字符串:param key: 随机的16位字符:param pad…

opencv +数字识别

现在很多场景需要使用的数字识别,比如银行卡识别,以及车牌识别等,在AI领域有很多图像识别算法,大多是居于opencv 或者谷歌开源的tesseract 识别.由于公司业务需要,需要开发一个客户端程序,同时需要在xp这种…

SQL(二)- 基础查询语句

简单的查询语句(DQL) 下面我们正式来学习查询语句,下面所有查询用到的表均为前面提到的三张表: 员工表中的数据: 部门表中的数据: 薪资表中的数据: 基本查询语句的语法: sele…

image 微信小程序flex_【微信小程序】flex布局一旦遇上for循环就失效

代码如下:wxml部分:{{item.name}}wxss部分:.skill .box {width: 100%;display: flex;flex-flow: row wrap;align-content: space-around;}.skill .skill-item {box-sizing: border-box;flex: 0 0 33.3333333333333%;font-size: 24rpx;color: …

SQL(三)- 连接查询

连接查询概念 一、什么是连接查询? 在实际开发中,大部分的情况下都不是从单张表中查询数据,一般都是多张表联合查询最终取出最终结果。在实际再发中,一般一个业务都会对应多张表,比如学生和班级,最起码两…

远程办公也可以很高效

题图:我的站立办公环境因为疫情,全中国人民都过了一个难忘的春节,而身在武汉的我,更是没有出家门半步,坚决做到不过国家添乱。从开始的2月14到后来的2月20日,再到现在的3月10日,官方发布的复工日…

github 检查代码质量_Android(8): 代码质量检查

代码质量检查是持续性的工作,检查的两个基本工具是FindBugs和CheckStyle。在实际项目中,检查的工作由测试人员实施,开发人员进行配合,形成日常性的工作。每天会对最新的代码进行检查,使用脚本(一般是测试用python写的)…

打印最少硬币的组合-dp+记录路径

题目: 有5种硬币,面值分别为:1,5,10,25,50。数量无限,输入非负整数s,选用硬币,使其和为s。要求输出最少的硬币组合的方案? 数据范围: s最大为250. 解题思路: 有时间再写…

SQL(四) - 子查询和union以及limit分页

子查询概念 什么是子查询?子查询都可以出现在哪里? select语句当中嵌套select语句,被嵌套的select语句是子查询。 子查询可以出现在哪里? select..(select). from..(select). where..(select).1.where子句中使用子查询 案例&a…

ASP.NET Core中的Http缓存

ASP.NET Core中的Http缓存Http响应缓存可减少客户端或代理对 web服务器发出的请求数。响应缓存还减少了 web服务器生成响应所需的工作量。响应缓存由 Http请求中的 header控制。而 ASP.NETCore对其都有相应的实现,并不需要了解里面的工作细节,即可对其进…

maven 排除配置文件打包_Maven打包pom里面配置exclude 排除掉环境相关的配置文件...

Maven打包pom里面配置exclude 排除掉环境相关的配置文件有几种方式:1. 打包时,指定环境参数把环境的配置文件复制过去2. 不打包所有的环境相关的配置文件,直接由运维的人维护可以在上传war包前把配置给改了,用rar工具改里面的配置…

快速幂(取模)模板

快速幂 代码如下: int fastpow(int x,int n) {if (n1) return x;int tmp fastpow(x,n/2);if (n%2){return tmp*tmp*x;}else return tmp*tmp; }位运算优化快速幂 代码如下: int fastpow(int x, int n) {int res 1;while (n) {if (n & 1)res * x;x…

SQL(五) - 表的创建以及操作

创建表 建表语句的语法格式: create table 表名(字段名1 数据类型,字段名2 数据类型,字段名3 数据类型,....);MySql常用数据类型 BLOB 二进制大对象(存储图片、视频等流媒体信息) Binary Large OBject (对应java中的Object&…

Istio 2020 年 Roadmap——一切为了商用

原文地址:https://preliminary.istio.io/zh/blog/2020/tradewinds-2020/,由 ServiceMesher 社区翻译。Istio 解决了人们在运行微服务时遇到的实际问题。甚至早期的预发行版本就已经可以帮助用户诊断其体系架构中的延迟,提高服务的可靠性以及透…

SQL(七) - 事务、索引、视图

事务(Transaction) 3.1、什么是事务? 一个事务是一个完整的业务逻辑单元,不可再分。 比如:银行账户转账,从A账户向B账户转账10000.需要执行两条update语句: update t_act set balance balan…

python二维数组遍历输出每行最大值_如何在二维数组中找到每行的最大值?

例如,我有一个二维数组:[[0.0,0.24320757858085434,0.14893361727523413,0.29786723455046826,0.18838778030301612,0.12160378929042717],[0.23717478210768014,0.0,0.16770789675478251,0.20539938644228997,0.25981195646349819,0.1299059782317491],…

GCD、LCM模板

最大公约数GCD 整数a和b的最大公约数记为gcd(a,b)。 代码如下: int gcd(int a,int b) {return b 0?a:gcd(b,a%b); }int gcd(int a, int b) {return b ? gcd(b, a % b) : a; }最小公约数LCM 整数a和b的最小公倍数记为lcm(a,b)。 代码如下: int lcm(i…

如何编写高性能的C#代码(二)

使用Benchmark.NET对C# 代码进行基准测试的简介在我以前的文章中[10],我介绍了该系列文章[11],在其中我将分享我的经验,同时了解C#和.NET Core(corefx)框架的新性能。在本文中,我想着重于对现有…