C# 从组合枚举值获取所有枚举常量的更好方法

C# 从组合枚举值获取所有枚举常量的更好方法,c#,enums,C#,Enums,我正在尝试从类型枚举变量获取所有枚举值: [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>(

我正在尝试从类型枚举变量获取所有枚举值:

[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() ) );          

}
[标志]
枚举类型
{
XML=1,
HTML=2,
JSON=4,
CVS=8
}
静态void Main(字符串[]参数)
{
Type Type=Type.JSON | Type.XML;
列表类型=新列表();
foreach(type.ToString().Split(',')中的字符串元素)
Add((Type)Enum.Parse(typeof(Type),elem.Trim());
}
有更好的方法吗?

列表类型=枚举
List<Type> types = Enum
                     .GetValues(typeof(Type))
                     .Cast<Type>()
                     .Where(val => (val & type) == val)
                     .ToList();
.GetValues(typeof(Type)) .Cast() 。其中(val=>(val&type)==val) .ToList();
获得所需结果的另一种方法。

在命名枚举时,首先尝试不要使用“Type”一词。使用EnumType或其他方法使用enum.GetValues..类似这样的方法

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;
    }
公共静态列表GetValue(类型enumType)
{
列表枚举=新列表();
如果(!enumType.IsEnum)抛出新的ArgumentException(找不到枚举类型”);
foreach(Enum.GetValues(EnumType)中的EnumType值)
添加(值);
返回枚举;
}

回答:这不是我真正想要的