« [.NET] KB: Visual Studio 2008 で単体テストを行った場合、予期せぬタイミングで Dispose メソッドや Finalize メソッドが呼ばれる | トップページ | [.NET] (続) フィードバック - 日付を "H21/1/9" のような和暦で出力できるようにしてほしい »

2009年3月19日 (木)

[.NET] リフレクションを使用してジェネリック型をインスタンス化する

Generic は便利なので、 さんざん使って来たわけで。 そのツケがとーとー回って来て、 名前から動的に Generic のインスタンスを生成するはめに。
# できなかったら、 case 文の嵐w

MSDN ライブラリで見つかりました。
方法 : リフレクションを使用してジェネリック型をチェックおよびインスタンス化する

ようするに、 MakeGenericType() を使え、 と φ(..;

Type genType = typeof(Hoge<>);
Type[] typeArgs = { typeof(Moge) };
Type typeHogeMoge = genType.MakeGenericType(typeArgs);
object o = Activator.CreateInstance(typeHogeMoge);

// これで Hoge<Moge> なインスタンスが出来上がり !


# ところで上のリンク先の url、 (VS.95) だそーですよ。 ってゆーか銀光のページだった f(^^;

 

…って、 あり !?
出来た o のメソッドを、 Invoke() してみたら。
IEnumerable<Moge> を返すメソッドのはずなのに、 なにやらヘンな型で返ってきてるよーな…

Moge の共通インターフェース IMoge を型引数にした IEnumerable<IMoge> にキャストしたいのに、 できんではないですか~ orz

あ。
(o as IEnumerable).Cast<IMoge>() で出来た風味 f(^^;

|

« [.NET] KB: Visual Studio 2008 で単体テストを行った場合、予期せぬタイミングで Dispose メソッドや Finalize メソッドが呼ばれる | トップページ | [.NET] (続) フィードバック - 日付を "H21/1/9" のような和暦で出力できるようにしてほしい »

プログラミング」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [.NET] リフレクションを使用してジェネリック型をインスタンス化する:

« [.NET] KB: Visual Studio 2008 で単体テストを行った場合、予期せぬタイミングで Dispose メソッドや Finalize メソッドが呼ばれる | トップページ | [.NET] (続) フィードバック - 日付を "H21/1/9" のような和暦で出力できるようにしてほしい »