有没有办法将属性应用于首先执行的方法?

时间:2012-03-07 16:09:01

标签: c# attributes asp.net-4.0 webforms custom-attributes

如果不使用像PostSharp这样的库,有没有办法设置一个我可以有逻辑的自定义属性,当附加到方法时,会执行PRIOR进入该方法吗?

1 个答案:

答案 0 :(得分:5)

没有;归因不是为了注入代码。像postharp这样的工具可以用烟雾和镜子来解决这个问题,但没有这个:没有。另一种选择可能是装饰模式, 也许动态地实现一个接口(通过任何方式都不是微不足道的)。但是,在方法的顶部添加实用程序方法调用更多更简单,并且可能很好,因为如果您有权访问添加属性,则可以添加方法调用。< / p>

或换句话说:像postharp这样的工具存在正确,因为这不是现成的。

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

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

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