QA@IT

List<Foo>からFooの部分をSystem.Typeで取りたい。

3097 PV

お世話になります。
ListからFooの部分をSystem.Typeで取りたいのですが、
どのようにすればよろしいのでしょうか?
ListをGetTypeでTypeを取得すると
System.Collections.Generic.List`1[Foo]
とりなります。Fooを取る方法をいろいろ調べてみたつもりですが方法が
分かりませんでした。
唯一思いついた方法がFooの部分を検索して文字列を取得してから
System.Type.GetType("Foo")
でした。

回答

GenericTypeArguments でジェネリック型引数がとれるようです。

var o = new List<string>();
Console.WriteLine(o.GetType().GenericTypeArguments[0]);
編集 履歴 (0)
  • レスが遅れて申し訳ありません。
    .netFramework4.5なら大丈夫でしたが、仕様で言い渡されていた2.0では動きませんでした。出張先で動くと喜んでいたのですが、いざ組み込もうとしたらダメでした。
    でもとても参考になりました。
    ありがとうございます。
    -
  • GetType().GetGenericArguments()[ 0 ]
    でも取れるようです。
    これが正しいかどうか調べてみます。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。