如果枚举是 a[Flags] enum
还是常规的,有什么方法可以反射性地测试enum
?
如果枚举是 Flags 枚举,我需要应用程序的行为略有不同,如果它不是 Flags 枚举。
如果枚举是 a[Flags] enum
还是常规的,有什么方法可以反射性地测试enum
?
如果枚举是 Flags 枚举,我需要应用程序的行为略有不同,如果它不是 Flags 枚举。
您可以通过反射测试属性是否存在:
System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t);
var isFlags = attrs.Any(attr => attr is FlagsAttribute);
或者:
var isFlags = typeof(MyEnum).GetCustomAttributes<FlagsAttribute>().Any();
请参阅:http: //msdn.microsoft.com/en-us/library/z919e8tw (v=vs.80).aspx
[操作编辑:]
这行得通,但语法略有错误。这是对的:
var isFlags = myEnum.GetType()
.GetCustomAttributes(typeof(FlagsAttribute), false).Any();
可以通过反射获取枚举的属性,看看是否使用了FlagsAttribute。