.NetCore如何将特性和依赖注入有效结合

场景        

都知道在不改变原有代码结构的情况下,想要对原有接口进行验证或者审计等功能,基本上无非是装饰器、代理、AOP这三种方式了,装饰器和代理在我们的现有框架上并不是很友好,所以我推荐使用AOP。

使用特性来实现基于AOP的审计需求

        传统特性很简单,无非是方法或者类前加上特性即可。

        但是在具有业务的情况下,有很多功能的提供类需要进行实例化才可以使用,在Core环境下,大部分都可以通过依赖注入来进行获取对象,如果能有效结合起来,那对于开发而言是相当便捷的。

        .NetCore的依赖注入可以说是无处不在的,特性也可以进行依赖注入,然后在需要用到的地方进行使用,具体用法如下

        首先在Startup文件中的ConfigureServices方法中进行特性的依赖注入

//注入日志记录类
services.AddScoped<LogAttribute>();

然后使用的时候就和普通用法有所区别了

这是普通用法

[LogAttribute]
public void Method(){}

如果特性的构造函数需要进行依赖注入才能获取对象的话,用法如下

[Microsoft.AspNetCore.Mvc.ServiceFilter(typeof(LogAttribute))]
public void Method(){}

果然微软想的周全。

posted @   打工人小余  阅读(1202)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示