使用 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 的方法将通过各自的方面得到增强。请参阅文档以了解如何过滤掉某些方法,例如按名称或知名度。
当我在方法上应用自定义属性时,使用 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 的方法将通过各自的方面得到增强。请参阅文档以了解如何过滤掉某些方法,例如按名称或知名度。