使用AttributeUsage
属性,我可以将属性的有效目标限制为某些实体类型(类,属性等)。但是,如何进一步限制它,使其只能应用于特定类型的属性?
例如:
[MyAttribute] // Valid
public Foo Item { get; set; }
[MyAttribute] // Compilation error: "Attribute 'MyAttribute' is only valid on classes derived from Foo"
public int Value { get; set; }
我非常确定这是可行的,因为如果我们尝试将AttributeUsage
属性应用到不是从Attribute
派生的类上,则该限制本身就存在:
[AttributeUsage(AttributeTargets.Property)] // Attribute 'AttributeUsage' is only valid on classes derived from System.Attribute
public class Bar { }
答案 0 :(得分:0)
@thehennyy指出,直到进一步通知,公认的答案是,我担心它不适用于自定义属性,而是由编译器针对AttributeUsage属性强制执行的。