c#用特性实现aop_在 C# 中的 AOP 实现,简洁你的代码

本文介绍了AOP(面向切面编程)的概念,强调了其在减少重复通用代码、解耦业务逻辑和切面逻辑方面的作用。通过C#的特性实现AOP,可以方便地扩展切面并保持代码整洁。文章提到了使用AOP的优缺点,并提供了CleanAop框架的版本历史和示例代码,展示了如何应用多个切面进行同步和异步方法的处理。
摘要由CSDN通过智能技术生成

AOP为Aspect Oriented Programming的缩写。 意为:面向切面编程。将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

github:

一:认识Aop

在日常的编程任务中,很多的代码都是进行一些通用的功能(日志、检测、一层处理等等),然后代码都是机械般的复制粘贴,实际上的业务逻辑代码只占不多的份额。那么,aop能更好的组织通用的代码、然后以标记的方式让某个方法切入,使得业务逻辑和通用代码分离,使其互不影响。

使用Aop的优点

容易扩展新的切面。

业务逻辑与切面逻辑解耦合。

对修改封闭、对扩展开放。

二:使用Aop的缺点

对于一些已存在修饰符的方法无法使用,需添加外围方法包含。

三:CleanAop支持语言

C#

版本历史

最新版本:v2.0.0

v2.0.0:拦截面切入方式改变,优化代理类生成方式。

使用AOP的类不能有带参构造函数bug修复。

v1.0.0:框架搭建完成、支持同步异步、提供Demo切面(错误捕获,log,时间记录)、前后切面选择。

哪里下载?

Demo测试案例

多切面、同步

[TryCatchAttrubute]

[LogAopAttrubute]

[TimeAop]

public virtual void DoWord()

{

throw new Exception("错误测试");

Debug.WriteLine("123");

}

结果:

开始捕捉异常([TryCatchAttrubute])

开始执行([LogAopAttrubute])

2015/11/5 0:47:19([TimeAop])

错误测试(异常捕获处理)

执行中([LogAopAttrubute])

执行结束,Void DoWord()方法([LogAopAttrubute])

2015/11/4 23:47:19 [TimeAop])复制代码

多切面、异步

[TryCatchAttrubute]

[LogAopAttrubute]

[TimeAop]

public virtual async Task DoWord()

{

await GetValueAsync(1234.5123, 1.01);

Debug.WriteLine("123");

throw new Exception("错误测试");

Debug.WriteLine("123");

}

结果:

开始捕捉异常([TryCatchAttrubute])

开始执行([LogAopAttrubute])

2015/11/5 1:05:23([TimeAop])

执行中([LogAopAttrubute])

123

处理错误,错误信息为:错误测试([TryCatchAttrubute])

执行结束,System.Threading.Tasks.Task DoWord()方法([LogAopAttrubute])

2015/11/5 0:05:23([TimeAop])复制代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值