Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 订阅正在执行的任何方法_C#_.net_Reflection_.net Core - Fatal编程技术网

C# 订阅正在执行的任何方法

C# 订阅正在执行的任何方法,c#,.net,reflection,.net-core,C#,.net,Reflection,.net Core,在我的应用程序中,我正在创建一个获取各种信息的审计包,其中一种信息应该提供关于执行什么方法的不同信息(执行时间、方法名称、方法类、程序集等) 我不打算使用现有的包或框架,而是创建自己的包或框架 我可以想象这是一件很复杂的事情,但我正在寻找一些指导来让我开始 您可能感兴趣的一个选项是DI级拦截。由于容器负责对象实例化,所以有时可以使用代理生成器对其进行配置以启用调用拦截 你可以选择,或者 使用这种方法要解决的最流行的任务是交叉关注点,如:日志记录、测量、运行时应用程序结构分析。如果您不想用重复的诊

在我的应用程序中,我正在创建一个获取各种信息的审计包,其中一种信息应该提供关于执行什么方法的不同信息(执行时间、方法名称、方法类、程序集等)

我不打算使用现有的包或框架,而是创建自己的包或框架


我可以想象这是一件很复杂的事情,但我正在寻找一些指导来让我开始

您可能感兴趣的一个选项是DI级拦截。由于容器负责对象实例化,所以有时可以使用代理生成器对其进行配置以启用调用拦截

你可以选择,或者

使用这种方法要解决的最流行的任务是交叉关注点,如:日志记录、测量、运行时应用程序结构分析。如果您不想用重复的诊断代码污染代码库,只需将此任务委托给拦截器即可

类似的想法是。我很久没有看到流行的AOP软件包了,也没有使用过它们,但也值得对这个主题进行研究:


在其最一般的形式中,它被称为探查器,虽然您当然可以构建自己的探查器,但它绝非微不足道。还有一些挑战性较小的选项,如使用代码生成来插入特定方法以调用审核代码,将单个调用包装在委托中,或者只留下调用代码,使用各种可用的日志记录/性能计数器包添加自己的插入。