C#でジェネリックリストのオブジェクト型を取得する方法


  1. GetType()メソッドを使用する方法: ジェネリックリストのオブジェクトを取得するには、まずリスト自体の型情報を取得します。これには、リストのインスタンスに対してGetType()メソッドを呼び出します。例えば、以下のコードを参考にしてください:

    List<int> myList = new List<int>();
    Type listType = myList.GetType();
    Type elementType = listType.GetGenericArguments()[0];
    Console.WriteLine(elementType);

    上記のコードでは、myListの型情報を取得し、GetGenericArguments()メソッドを使用してジェネリック引数の配列を取得します。配列の最初の要素はリストのオブジェクト型に対応しているため、elementTypeに代入して出力しています。

  2. typeof演算子を使用する方法: ジェネリックリストのオブジェクト型を取得する別の方法として、typeof演算子を使用する方法があります。以下のように使用します:

    List<string> myList = new List<string>();
    Type elementType = typeof(List<>).MakeGenericType(myList.GetType().GetGenericArguments());
    Console.WriteLine(elementType);

    上記のコードでは、typeof(List<>)を使用してList<>型の型情報を取得し、MakeGenericType()メソッドを使用してリストのジェネリック引数の型情報を設定します。

  3. リフレクションを使用する方法: ジェネリックリストのオブジェクト型を取得する別の方法として、リフレクションを使用する方法があります。以下のように使用します:

    List<double> myList = new List<double>();
    Type listType = myList.GetType();
    Type elementType = listType.GetGenericArguments()[0];
    Console.WriteLine(elementType);

    この方法は、リフレクションを使用して型情報を取得するため、実行時に型情報を取得できます。

これらの方法を使用することで、C#でジェネリックリストのオブジェクト型を取得することができます。どの方法を選択するかは、使用するコンテキストによって異なる場合があります。