AttributeUsageAtribute是如何实现的?

时间:2011-11-11 20:42:00

标签: c# .net attributes

我有两个问题。

首先,正如标题所说,有人知道如何实现AttributeUsageAtribute吗?它只能应用于从Attribute派生的类,如果不是,它将会出错: 属性“AttributeUsage”仅对从System.Attribute

派生的类有效

其次,我可以编写一个类似的属性,可以应用于从特定类派生的类或实现特定的接口吗?

1 个答案:

答案 0 :(得分:2)

1)这是特定于编译器的

2)你可以尝试以下技巧:

var attributes = typeof(A).GetCustomAttributes(A.GetDerivedFromAOnlyAttributeType(), false);
// using an attribute outside the A class

class A {
    protected class DerivedFromAOnlyAttribute : Attribute { }
    public static Type GetDerivedFromAOnlyAttributeType() {
        return typeof(DerivedFromAOnlyAttribute);
    }
}
[A.DerivedFromAOnly] //ok
class B : A {
}
[A.DerivedFromAOnly] //error
class C { 
}