此代码引发错误:Method ...OnEntry(...) should be annotated with a selector custom attribute because it is a master handler
。
[PSerializable]
public class LogRequestAttribute : MethodLevelAspect, IAspectProvider {
public IEnumerable<AspectInstance> ProvideAspects(object target) {
yield return new AspectInstance( target, new LogPlainRequest() );
}
}
[PSerializable]
public class LogPlainRequest : IMethodLevelAspect {
public void RuntimeInitialize(MethodBase method) {
}
[OnMethodEntryAdvice]
public void OnEntry(MethodExecutionArgs args) {
}
}
错误含义是什么?怎么了?
答案 0 :(得分:1)
您可以将多个相关建议合并为一组(例如OnEntry
,OnExit
)。这就是OnMethodBoundaryAspect自动为您执行的操作。将建议分组后,需要将其中一个指定为“主建议”。该组的属性和切入点必须在主建议中设置。
分配给主建议的切入点充当建议目标元素的选择器。例如,SelfPointcut仅选择方面的目标作为建议的目标。您可以在文档中找到更多信息和不同的切入点类型: https://doc.postsharp.net/advices
在上面的示例中,您可以将[SelfPointcut]
属性应用于OnEntry
方法,以消除错误消息。
[PSerializable]
public class LogPlainRequest : IMethodLevelAspect {
public void RuntimeInitialize(MethodBase method) {
}
[OnMethodEntryAdvice]
[SelfPointcut]
public void OnEntry(MethodExecutionArgs args) {
}
}