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

Using postSharp how to capture all method entry and exit event at class level?

当我在方法上应用自定义属性时,使用 postsharp 我可以捕获该方法的进入和退出事件。但是,当我在 Class 级别而不是方法级别应用属性时,有什么方法可以捕获方法的这种进入和退出?例如,当我应用该属性时,它应该捕获该 class 下任何方法的进入和退出。下面是方法级别捕获的示例代码

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

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

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

如@Peter Bons 的评论中所述,您所要求的已记录在 https://doc.postsharp.net/attribute-multicasting#all-members 中,它的工作方式与您预期的完全一样 - 您将属性应用于 class 和所有class 的方法将通过各自的方面得到增强。请参阅文档以了解如何过滤掉某些方法,例如按名称或知名度。