zoukankan      html  css  js  c++  java
  • c#实现AOP

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

     静态代理需要给每个类添加一个代理类,当实体类过多时 静态代理就不适用了。

  • 相关阅读:
    Oracle自增ID实现
    mysql5修改用户密码及远程访问
    关于线程中修改UI的控件属性
    Javascript 保持浮动位置
    Linq To Entity 查询条件扩展
    反转字符顺序
    VB6.0 二分法解方程
    支持库:FileHelper
    C# 计算加减乘除
    Linq.GroupBy使用示例
  • 原文地址:https://www.cnblogs.com/LTEF/p/10371238.html
Copyright © 2011-2022 走看看