我正在尝试从Type枚举变量中获取所有枚举值:
[Flags]
enum Type
{
XML = 1,
HTML = 2,
JSON = 4,
CVS = 8
}
static void Main(string[] args)
{
Type type = Type.JSON | Type.XML;
List<Type> types = new List<Type>();
foreach (string elem in type.ToString().Split(',') )
types.Add( (Type)Enum.Parse( typeof(Type), elem.Trim() ) );
}
有更好的方法吗?
答案 0 :(得分:6)
List<Type> types = Enum
.GetValues(typeof(Type))
.Cast<Type>()
.Where(val => (val & type) == val)
.ToList();
获得理想结果的另一种方式。
答案 1 :(得分:-1)
首先尝试在命名enum时使用'Type'这个词。使用EnumType或其他东西使用Enum.GetValues..something like this
public static List<EnumType> GetValues(Type enumType)
{
List<EnumType > enums = new List<EnumType >();
if (!enumType.IsEnum) throw new ArgumentException(Enum type not found");
foreach (EnumType value in Enum.GetValues(enumType))
enums.Add(value);
return enums;
}