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

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

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

最佳答案

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

或者换句话说:像 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();
    }
}

关于c# - 有没有办法将属性应用于首先执行的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605031/

相关文章:

c# - 我应该在我的类中包装我的类自定义异常吗?

c# - 在 C# 汇编中引用 Java DLL?

c# - 如何从 Entity Framework 中的 .edmx 文件生成数据库?

javascript - 更改现有网页以将属性值显示为文本

c# - 脚本资源错误 : This is an invalid script resource request

asp.net-4.0 - 我们可以在现有的 ASP.NET 4 网站上使用 Razor 吗?

c# - 在 ObservableCollection 上使用 Lambda 表达式

java - 在 Java 中不使用 XSLT 将 XML 属性转换为标签(节点)

c# - 如何通过自定义属性选择类的某些属性

javascript - 如何使用javascript在输入文本框中设置日期自动格式