2016-09-22 13 views
2

以下のコードは、問題を示す元のコードを削除したものです。 dotnetcore(1.0.1).IsEnumプロパティはSystem.Reflectionに移動されます。私はすべてが期待どおりに動作するように変更しました。しかし、私が働かせることができないのは、タイプオブジェクトです。dotnetcore GetTypeInfo()はオブジェクト型の変数で定義されていませんか?

コンパイラは、このエラーがスローされます。 C:\ TMP \ netcore \ REPRO \ Program.csを(14,17):エラーCS0103:名前 'T' は現在のコンテキストで

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"); 
     } 
    } 
} 

存在しません。 dotnetcoreにオブジェクトがEnum型であるかどうかをテストするための回避策はありますか?オブジェクト型の拡張メソッドがない特定の理由はありますか(私が必要とする他のすべての型はうまくいくようです)。 TypeからTypeInfoに移動する場合

答えて

4

.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コンソールアプリで。

関連する問題