次のように、クラスまたはメソッドにジェネリック メンバーがあるとします。
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
型パラメータとして持っている場合は、マークの答え。