2016-09-22 2 views
2

приведенный ниже код является урезанной версией исходного кода, который демонстрирует проблему. В dotnetcore (1.0.1) свойство .IsEnum перемещается в System.Reflection. Я внес изменения, и все работает так, как ожидалось. Однако тот, который я не могу сделать для работы, относится к типу.dotnetcore GetTypeInfo() не определен для переменных объекта типа?

Компилятор выдает эту ошибку: C: \ TMP \ Netcore \ репро \ Program.cs (14,17): CS0103 об ошибке: Имя 'т' не существует в текущем контексте

public class Program 
{ 
    enum Kleur {Red, Blue, Green} 

    public static void Main(string[] args) 
    { 
     object myType = Kleur.Green; 
     if (myType.GetTypeInfo().IsEnum) 
     { 
      Console.WriteLine("Yes its an enum"); 
     } 
    } 
} 

Есть ли способ обхода, чтобы проверить, имеет ли объект тип Enum в dotnetcore? Существует ли конкретная причина, почему нет метода расширения для объекта типа (все остальные типы, которые мне нужны, как представляется, работают).

ответ

4

При переходе от Type к TypeInfo, замена для .GetType() не только .GetTypeInfo(), это .GetType().GetTypeInfo(). Это потому, что Type не был удален, вместо этого он был разделен на Type, который содержит только некоторые базовые элементы и TypeInfo, что и остальное.

Таким образом, ваш код должен быть:.

object myType = Kleur.Green; 
if (myType.GetType().GetTypeInfo().IsEnum) 
{ 
    Console.WriteLine("Yes its an enum"); 
} 
1

myType.GetType() IsEnum работает для меня (с его объектом). Да, в приложении .Net Core.

Смежные вопросы