c#實現AOP

AOP:面向切面編程,經過預編譯方式或運行期動態代理實現程序功能的中統一處理業務邏輯的一種技術,比較常見的場景是:日誌記錄,錯誤捕獲、性能監控等html

AOP詳解:https://www.cnblogs.com/Wolfmanlq/p/6036019.html編程

AOP有靜態代理動態代理c#

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

 靜態代理須要給每一個類添加一個代理類,當實體類過多時 靜態代理就不適用了。this

相關文章
相關標籤/搜索