Свойство Type.IsEnum в библиотеке портативных классов

Я пытаюсь выполнить код Portable Class Library с помощью ASP.NET Core 1.0, следующую инструкцию:

public static void WriteMessage<T>(T value)
{
    if (typeof(T).IsEnum)
    {
        Debug.Print("Is enum")
    }
    else
    {
        Debug.Print("Not Is enum")
    }
}

Но этот код не компилируется, потому что компилятор говорит, что свойство IsEnum отсутствует в типе.

Любые предложения?

Ответы

Ответ 1

Некоторые функции из Type были перенесены в TypeInfo в .NET Core.

typeof(T).GetTypeInfo().IsEnum

Ответ 2

Попробуйте value is Enum просто так:

    enum Test {one, two};

    public static void Main(string[] args)
    {
        //Your code goes here
        Console.WriteLine("Hello, world!");

        Test x = Test.one;

        WriteMessage<Test>(x);
    }

    public static void WriteMessage<T>(T value)
    {
       if (value is Enum)
       {
          Debug.Print("Is enum");
       }
       else
       {
          Debug.Print("Not Is enum");
       }

    }