AOP:面向切面编程,通过预编译方式或运行期动态代理实现程序功能的中统一处理业务逻辑的一种技术,比较常见的场景是:日志记录,错误捕获、性能监控等
AOP详解:https://www.cnblogs.com/Wolfmanlq/p/6036019.html
AOP有静态代理和动态代理
c# 通过代理类 实现调用方法时打印日志:
using System; namespace TestApp { class AOPDemo { // 实体类 class Business { public void Test1() { int ret = 0; for (int i = 0; i < 1000; i++) { ret += i; } Console.WriteLine("Test1 result:" + ret); } public void Test2() { int ret = 0; for (int i = 0; i < 10000; i++) { ret += i; } Console.WriteLine("Test2 result:" + ret); } } class BusinessProxy:Business { public void Invoke(string methodName) { Console.WriteLine("before execute"); // 打印日志 base.GetType().GetMethod(methodName).Invoke(this, null); Console.WriteLine("after execute"); } } static void Main() { var business = new BusinessProxy(); business.Invoke("Test1"); // 调用方法 business.Invoke("Test2"); } } }
静态代理需要给每个类添加一个代理类,当实体类过多时 静态代理就不适用了。