[AttributeUsage(AttributeTargets.Property)] public class MyAttribute : Attribute { ... }
我想要在属性和文件上使用这个自定义属性,而不是其他属性.如何分配多个目标(AttributeTargets.Property和AttributeTargets.Field)?还是只是不可能?
和AttributeTargets.All不是我想要的.
解决方法
您可以通过使用|来指定这样的多个目标(按位OR)运算符指定多个枚举值:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] public class MyAttribute : Attribute { ... }
按位OR运算符与AttributeTargets枚举工作,因为它的值被分配一个特定的方式,并且标记了Flags属性.
如果你关心,你可以在这里阅读更多:
> C# Fundamentals: Combining Enum Values with Bit-Flags
> Understand how bitwise operators work (C# and VB.NET examples)