当前位置: 首页 > 知识库问答 >
问题:

使用postSharp如何在类级别捕获所有方法进入和退出事件?

郎弘壮
2023-03-14

使用postsharp,当我将自定义属性应用于某个方法时,我可以捕获该方法的入口和出口事件。但是,当我在类级别而不是方法级别应用属性时,是否有任何方法可以捕获方法的这个入口和出口?例如,当我应用该属性时,它应该捕获该类下任何方法的入口和出口。下面是方法级捕获的示例代码

public class CustomAttr: OnMethodBoundaryAspect
    {
        [NonSerialized]
        public override void OnEntry(MethodExecutionArgs args)
        {
            //do something
        }

        public override void OnSuccess(MethodExecutionArgs args)
        {
            //do something
        }
    }

共有1个答案

邓德厚
2023-03-14

是的,这称为“属性多播”。有几种方法可以做到这一点,所有这些方法都记录在https://doc.postsharp.net/applying-aspects.

您要的文件记录在https://doc.postsharp.net/attribute-multicasting#all-正如@PeterBons在评论中提到的成员,它的工作原理与您预期的完全一样-您将属性应用于类,并且该类的所有方法都将通过各自的方面得到增强。有关如何过滤某些方法(例如,按名称或可见性)的信息,请参阅文档。

 类似资料:
  • Spring Transaction Propagation如何为Propagation_REQUIRED和Propagation_REQUIRED_NEW工作? 请提供有关类到类级别和方法到方法级别的传播的信息。 我还需要知道如何初始化/启动这些事务,并在当前事务完成时恢复以前的事务,以进行传播。 在需要传播和需要新传播的情况下使用单个事务时,事务将如何决定何时需要提交/回滚?

  • 我使用codeigniter和有一个表3列(id,名称,parent_id)。一个类别可以有多个子类别,一个子类别可以有多个子类别。 我一直在尝试使用以下代码获取所有类别及其子类别: 但它只返回1级类别。 我的问题是如何完成我的任务:获得每个级别的所有类别和子类别。

  • 问题内容: 当仅更改位置哈希值时,是否有办法应对javascript中的后退按钮被击中(或按下退格键)的问题?也就是说,当浏览器不与服务器通信或重新加载页面时。 问题答案: 使用事件: 如果需要支持较旧的浏览器,请查看Modernizr的HTML5跨浏览器Polyfills Wiki页面中的“事件”部分。

  • 在官方w3.org留档中,输入类型="文件"标记没有属性。 讽刺的是,我发现在很多地方都使用了。例如这里或这里或这里和其他许多地方。 没有一个教程带有捕获=用户。为什么? 和之间有什么主要区别吗? 您能否同时提及和的设备兼容性?我到处都找不到。

  • 问题内容: 我有此代码- 编译器将如何实际实现这一点。实际在汇编代码中生成的异常检查在哪里? 更新 我知道上面的代码如何转换为 bytecode 。字节码仅将try-catch转换为相应的try- handler块。我对它将如何转换为jvm进行汇编和/或处理感兴趣。 问题答案: 试捕法的成本 大致来说,block不会向结果程序集中添加任何异常检查代码。只要不引发异常,它基本上是无操作的。所有缓慢的

  • 问题内容: 使用Python的模块和方法时,如何检索退出代码? 相关代码: 我应该以其他方式这样做吗? 问题答案: 完成后将设置属性(*)。这是相关的文档部分: 所以您可以做(我没有测试过,但是应该可以): (*)发生这种情况的原因是它的实现方式:设置线程以读取子流后,它仅调用。