通知
すべてクリア
Topic starter
2008年12月26日 11:15 AM
お世話になります。
WinXP Pro SP3, VS 2008 SP1, C#です。
C#でのキャストについて質問があります。
とある理由から、型名をstring型変数に持っています
(仮にstring typeName = System.Windows.Forms.Formとします)
そして、任意のタイミングでobject型のインスタンス
(仮にobject objControlとします)を上記のstring型の
変数に持っている型名に動的にキャストするには
どうしたらいいのでしょうか。
(objControl as System.Windows.Forms.Form
と同等のことをしたいです)
初歩的な質問かもしれませんが
教えてください。
2008年12月26日 12:22 PM
できません。
そもそも,キャストしてどうしたいのでしょうか。
基本的に,C#ではコンパイル時に静的型が決定している必要があります。
つまり,仮にキャストできたとしても,その静的型はSystem.Objectから変化しません。
そのため,呼び出せるのはSystem.Objectのメンバのみとなります。
遅延バインドさせたいのであれば,リフレクションを使うか,式木を使ってください。
どちらにしても,文字列からSystem.Typeを作っておく必要があります。
# System.Type.GetTypeとかSystem.Reflection.Assembly.GetTypeとか。