验证Aspect是否在类级别而不是方法级别应用

时间:2015-03-27 15:36:55

标签: postsharp

我有一个OnMethodBoundaryAspect,在CompileTimeValidate方法中,我想验证是否在类级别应用了Aspect属性。 例如:

    [MyCustomAspect]
    public class SomeClass
    {
    ...

我不希望这样抛出编译错误。 例如:

    public class SomeClass
    {
        [MyCustomAspect]
        public void SomeMethod() {
        ...

如何检测我的Aspect属性的应用位置?

1 个答案:

答案 0 :(得分:0)

CompileTimeValidate方法执行的时刻已经太晚,无法验证属性应用程序。 “属性多播”步骤首先运行,它会将类上应用的方法级别方面传播到类方法,同时删除原始属性。

要验证属性应用程序,您可以使用[AttributeUsage]配置有效目标。

[Serializable]
[AttributeUsage(AttributeTargets.Class)]
public class MyCustomAspect : MethodLevelAspect
{
    // ...
}