C# 关于AOP简单介绍

  AOP(Aspect-Oriented Programming)是一种将函数的辅助性功能与业务逻辑相分离的编程范式(programming paradigm),其目的是将横切关注点(cross-cutting concerns)分离出来,使得程序具有更高的模块化特性。

AOP体现原则:单一职责原则 和 开放封闭原则

  假设我们有一个应用场景(见下图),假如我不想改变旧有的SayHello方法,在方法前面添加验证功能,后面添加写日志功能,那么要怎么做呢?就需要使用AOP的方式来实现此功能了。

 

  常见的AOP实现方式有三种:中间件Middleware、过滤器Filter、代码织入(静态织入和动态代理)

  1、中间件Middleware

  请求管道包含一系列请求委托,依次调用。 下图演示了这一概念。 沿黑色箭头执行。

  

 

  2、Filter

  下图展示了过滤器类型在筛选器管道中的交互方式。

 

  

 

   3、代码织入

  第一种:静态织入,即:在编译时,就将各种涉及AOP拦截的代码注入到符合一定规则的类中,编译后的代码与我们直接在类中调用属性或方法前后增加代码是相同的,只是这个工作交由编译器来完成。

  第二种:EMIT反射,即:通过Emit反射动态生成代理类,如使用Castle.DynamicProxy的AOP实现方式。

 

   

posted @   Zeng。  阅读(1610)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示