Получить базовый/производный тип перечисления?

Как вы можете получить базовый/производный тип (байт, короткий, int и т.д.) перечисления?

Ответы

Ответ 1

Вы ищете Enum.GetUnderlyingType(enumType);

Пример MSDN:

static object GetAsUnderlyingType(Enum enval)
{
    Type entype = enval.GetType();

    Type undertype = Enum.GetUnderlyingType(entype);

    return Convert.ChangeType(enval, undertype);
}

Ответ 2

using System;

class Program
{
    enum IntEnum : int { A }

    static void Main(string[] args)
    {
        var intEnum = IntEnum.A;

        Console.WriteLine(intEnum.GetType().GetEnumUnderlyingType());

        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }       
}