验证方面应用在 class 级别而不是方法级别

Validate the Aspect is applied at the class level NOT the method level

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

    [MyCustomAspect]
    public class SomeClass
    {
    ...

我不希望这样引发编译错误。 示例:

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

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

CompileTimeValidate 方法执行的时刻已经太迟无法验证属性应用程序。 "attribute multicasting" 步骤首先运行,它会将应用于 class 的方法级别方面传播到 class 方法,同时删除原始属性。

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

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