PostSharp OnMethodBoundaryAspect

Jos*_*llo 3 c# postsharp

我正在研究postharp 1.5和OnMethodBoundaryAspect的方面.我希望我的方面默认具有以下行为:

1 - 如果在类级别使用该属性,则方面仅应用于PUBLIC方法.

2 - 方面的用户可以将方面放在私有或受保护的方法中.

如果我使用[MulticastAttributeUsage(MulticastTargets.Method,TargetMemberAttributes = MulticastAttributes.Public)]点1工作,但案例2甚至不构建因为不兼容.

然后我尝试使用:AttributeTargetTypeAttributes = MulticastAttributes.Public; 在方面的构造函数中,但不起作用.

非常感谢你提前.

Gae*_*eur 5

不幸的是,没有办法使用SINGLE方面类来实现您的需求.

您可以使用三个方面类:

public abstract class MyAspect : OnMethodBoundaryAspect
{
}

[MulticastAttributeUsage(..., 
      TargetMembersAttributes = MulticastAttributes.Public )]
[AttributeUsage(AttributeTargets.Class)]
public class ClassLevelAspect : MyAspect
{
}

[MulticastAttributeUsage(..., 
     TargetMembersAttributes = MulticastAttributes.NonPublic )]
[AttributeUsage(AttributeTargets.Method)]
public class MethodLevelAspect : MyAspect
{
}
Run Code Online (Sandbox Code Playgroud)

-gael