有没有一种方法可以将属性应用于首先执行的方法

本文关键字:方法 应用于 属性 执行 有没有 一种 | 更新日期: 2023-09-27 18:27:07

在不使用PostSharp这样的库的情况下,有没有一种方法可以设置一个自定义属性,我可以在该属性中具有逻辑,当附加到一个方法时,它将在输入该方法之前执行?

有没有一种方法可以将属性应用于首先执行的方法

否;属性不是用来注入代码的。像postsharp这样的工具可以通过烟雾和镜子来解决这个问题,但没有:不。另一种选择可能是装饰器模式,也许是动态地实现一个接口(无论如何都不是微不足道的)。但是,将实用程序方法调用添加到方法的顶部要简单得多,而且可能很好,因为如果您有权添加属性,那么您就有权添加方法调用。

或者换一种说法:像postsharp这样的工具存在于中,因为这并不是开箱即用的。

// poor man's aspect oriented programming
public void Foo() {
    SomeUtility.DoSomething();
    // real code
}

在某些情况下,子类化可能很有用,特别是如果子类是在运行时完成的(元编程):

class YouWriteThisAtRuntimeWithTypeBuilder : YourType {
    public override void Foo() {
        SomeUtility.DoSomething();
        base.Foo();
    }
}