2013-02-28 80 views

回答

4

您可以通过反射测试属性是否存在:

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

[OP编辑:]

这个工作,但语法稍微有点w荣。这是正确的:

var isFlags = myEnum.GetType() 
    .GetCustomAttributes(typeof(FlagsAttribute), false).Any(); 
1

您可以通过反射得到枚举的属性,看看如果使用的FlagsAttribute。