C# 如何区分标志枚举和普通枚举的区别?
是否有任何方法可以反射测试枚举是C# 如何区分标志枚举和普通枚举的区别?,c#,enums,enum-flags,C#,Enums,Enum Flags,是否有任何方法可以反射测试枚举是[Flags]枚举还是常规枚举 如果枚举是标志枚举,我需要应用程序的行为稍微不同于如果它不是标志枚举。您可以通过反射测试属性是否存在: System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t); var isFlags = attrs.Any(attr => attr is FlagsAttribute); 或: 您可以通过反射获取枚举的属性,并查看是否使用了FlagsAttrib
[Flags]枚举
还是常规枚举
如果枚举是标志枚举,我需要应用程序的行为稍微不同于如果它不是标志枚举。您可以通过反射测试属性是否存在:
System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t);
var isFlags = attrs.Any(attr => attr is FlagsAttribute);
或:
您可以通过反射获取枚举的属性,并查看是否使用了FlagsAttribute
var isFlags = typeof(MyEnum).GetCustomAttributes<FlagsAttribute>().Any();
var isFlags = myEnum.GetType()
.GetCustomAttributes(typeof(FlagsAttribute), false).Any();