c#实现AOP

AOP:面向切面编程,通过预编译方式或运行期动态代理实现程序功能的中统一处理业务逻辑的一种技术,比较常见的场景是:日志记录,错误捕获、性能监控等

AOP详解:https://www.cnblogs.com/Wolfmanlq/p/6036019.html

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");
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/LTEF/p/10371238.html