C#:枚举值的通用列表

gdo*_*ica 2 c# generics enums

有没有办法创建一个获取枚举类型作为参数的方法,并从它的值返回枚举基础类型的泛型列表,无论底层类型是否为int\short byte等'...
我看到了这个 Jon Skeet的回答,但看起来太复杂了.

Mar*_*ell 5

如果你想传入一个Type,它实际上不是很有用的通用 - 你必须返回一个与输入没有直接关系的单一类型,因此类似于:

    public static Array GetUnderlyingEnumValues(Type type)
    {
        Array values = Enum.GetValues(type);
        Type underlyingType = Enum.GetUnderlyingType(type);
        Array arr = Array.CreateInstance(underlyingType, values.Length);
        for (int i = 0; i < values.Length; i++)
        {
            arr.SetValue(values.GetValue(i), i);
        }
        return arr;
    }
Run Code Online (Sandbox Code Playgroud)

这是一个强类型的向量,所以你可以将其转换为int[]等.