【朝夕技术专刊】Core3.1WebApi_Filter多种注册方式支持依赖注入

本文主要是介绍【朝夕技术专刊】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多种注册方式支持依赖注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/355370

相关文章

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保