ジェネリッククラスまたはメソッドのメンバーからTの型を取得する方法 質問する

ジェネリッククラスまたはメソッドのメンバーからTの型を取得する方法 質問する

次のように、クラスまたはメソッドにジェネリック メンバーがあるとします。

public class Foo<T>
{
    public List<T> Bar { get; set; }
    
    public void Baz()
    {
        // get type of T
    }   
}

クラスをインスタンス化すると、 はTになりMyTypeObject1、クラスにはジェネリック リスト プロパティが設定されます。List<MyTypeObject1>同じことが、非ジェネリック クラスのジェネリック メソッドにも適用されます。

public class Foo
{
    public void Bar<T>()
    {
        var baz = new List<T>();
        
        // get type of T
    }
}

クラスのリストにどのようなタイプのオブジェクトが含まれているかを知りたいです。では、Tリスト プロパティBarまたはローカル変数にはどのようなタイプのオブジェクトがbaz含まれているのでしょうか?

Bar[0].GetType()リストに要素が 0 個含まれている可能性があるため、を実行できません。 どうすれば実行できますか?

ベストアンサー1

私の理解が正しければ、リストにはコンテナ クラス自体と同じ型パラメータがあります。この場合、次のようになります。

Type typeParameterType = typeof(T);

幸運にもobject型パラメータとして持っている場合は、マークの答え

おすすめ記事