当前位置: 首页 > article >正文

C#利用Attribute实现面向切面编程(AOP)

见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看......

1.定义自定义 Attribute

using System;

[AttributeUsage(AttributeTargets.Method)]
public class LogAttribute : Attribute
{
    public void BeforeMethod()
    {
        Console.WriteLine("Before method execution.");
    }

    public void AfterMethod()
    {
        Console.WriteLine("After method execution.");
    }
}
 

2.创建业务类和方法

public class BusinessClass
{
    [Log]
    public void DoSomething()
    {
        Console.WriteLine("Doing something...");
    }
}
 

3.实现 AOP 框架

using System.Reflection;

public class AopFramework
{
    public static void InvokeMethod(object obj, MethodInfo method)
    {
        var attributes = method.GetCustomAttributes(typeof(LogAttribute), false);
        foreach (var attribute in attributes)
        {
            ((LogAttribute)attribute).BeforeMethod();
        }

        method.Invoke(obj, null);

        foreach (var attribute in attributes)
        {
            ((LogAttribute)attribute).AfterMethod();
        }
    }
}
 

4.调用

class Program
{
    static void Main()
    {
        var businessObj = new BusinessClass();
        var method = businessObj.GetType().GetMethod("DoSomething");
        AopFramework.InvokeMethod(businessObj, method);
    }
}

关注我,不失联。有啥问题请留言。

感情恋爱合集

职业发展故事

常用代码片段

程序开发教程

自我备考经验 


http://www.kler.cn/a/467828.html

相关文章:

  • http性能测试命令ab
  • 用opencv实现像素统计
  • 光缆生产车间可视化,让智能制造更透明
  • 【微服务】2、网关
  • 使用SSH建立内网穿透,能够访问内网的web服务器
  • 网络安全【C10-2024.10.1】-sql注入基础
  • LangChain4j 框架探索
  • 前端-计算机网络篇
  • 【Unity功能集】TextureShop纹理工坊(八)修剪工具
  • 基于Spring Boot的前后端分离的外卖点餐系统
  • 前端异常处理合集
  • python pandas 对mysql 一些常见操作
  • Vulnhub靶场(Earth)
  • 【机器学习篇】解密算法魔方之魅之机器学习的多维应用盛宴
  • C 实现植物大战僵尸(四)
  • 太速科技-633-4通道2Gsps 14bit AD采集PCie卡
  • Azkaban其二,具体使用以及告警设置
  • win10 npm login 登陆失败
  • ARM CCA机密计算安全模型之CCA认证
  • 大数据技术(六)—— Hbase集群安装
  • Oracle ADG备机报错ORA-00328 ORA-00334
  • 人工智能:是助力还是取代?
  • CSP知识点整理大全
  • arm64函数源码和汇编解析(objdump)
  • Java【线程与并发】
  • 项目配置设置二 (芒果头条项目进度3)