[.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 / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
この記事へのコメントは終了しました。
コメント