自定义类属性,它将不同的属性应用于所有方法

时间:2015-02-06 18:52:36

标签: c#

我知道我可以像这样创建自定义类属性:

[AttributeUsage(AttributeTargets.Class)]
class MyClassAttribute : Attribute {
    // Logic in here to apply MyMethodAttribute to all methods
    // in the class to which this is applied.
}

...我可以创建一个自定义方法属性,如下所示:

[AttributeUsage(AttributeTargets.Method)]
class MyMethodAttribute : Attribute { }

如何编辑MyClassAttribute的逻辑,以便它自动将MyMethodAttribute应用于我应用它的类中的所有方法? 这可能吗?

2 个答案:

答案 0 :(得分:1)

根据this documentation,不可能触发其他一些装饰逻辑,因为Attribute本身无法访问它所应用的类(或方法)。

答案 1 :(得分:1)

如何使用partial methodsT4

您运行模板 - 它使用reflection为具有该属性的类中的所有方法生成部分方法存根,并自动添加该属性。

显然它并不理想(您必须将您的课程标记为部分,并且每个装配需要一个模板),但它可能适合您。