C# 中特性的深入探讨
一、System.AttributeUsageAttribute 特性
在 C# 里,大部分特性仅用于修饰特定的构造。为防止特性被不恰当使用,可借助System.AttributeUsageAttribute来限制特性的使用范围。以下是相关示例:
[AttributeUsage(AttributeTargets.Property)] public class CommandLineSwitchAliasAttribute : Attribute { // ... }若特性使用不当,像下面这样:
// ERROR: The attribute usage is restricted to properties [CommandLineSwitchAlias("?")] class CommandLineInfo { }就会引发编译时错误。
AttributeUsageAttribute的构造函数接收一个AttributesTargets标志,此枚举列出了运行时允许特性修饰的所有可能目标。例如,若想让CommandLineSwitchAliasAttribute也能用于字段,可按如下方式更新AttributeUsageAttribute类: