PostSharp 接口方法属性

PostSharp Interface Method Attribute

假设我有以下内容:

public interface IMyInterface {
    void DoSomething();
}

public class MyClass: IMyInterface {
    public void DoSomething() {
        // do something
    }
}

然后,我想像这样创建一个方法属性:

[PSerializable]
[AttributeUsage(AttributeTargets.Method)]
public class NotNullAttribute : MethodImplementationAspect
{
    public override void OnInvoke(MethodInterceptionArgs args)
    {
        throw new NullReferenceException();
    }
}

现在,我知道我可以将其应用于 class 方法。

但是,我希望能够执行以下操作:

public interface IMyInterface {
    [NotNull]
    void DoSomething();
}

然后,所有实现此方法的 classes 都应用了拦截器。不幸的是,这在编译时给我一个错误。

这可能吗?我试图在文档中找到答案,但一直没有成功。

如果 可行,有人可以帮我了解如何完成吗?

我成功了...

我在属性定义和抽象方法上都缺少一个属性。

工作示例:

[PSerializable]
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Instance)]
[AttributeUsage(AttributeTargets.Method)]
public class NotNullAttribute : MethodInterceptionAspect
{
    public override void OnInvoke(MethodInterceptionArgs args)
    {
        throw new NullReferenceException();
    }
}

及其使用方法:

public interface IMyInterface {
    [NotNull(AttributeInheritance = MulticastInheritance.Multicast)]
    void DoSomething();
}

public class MyClass: IMyInterface {
    public void DoSomething() {
        // do something
    }
}