• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リフレクションはどういったものですか?)

リフレクションはどういったものですか?

このQ&Aのポイント
  • リフレクションは、プロパティ名・プロパティ値を取得して表示するのに必要不可欠な概念です。
  • プロパティの設定方法としては、Visual Studio 2005のプロパティ画面でGUI上で直接設定する方法、ボタン名.プロパティ名 = プロパティ値という方法、そしてリフレクションという方法の3つがあります。
  • リフレクションは、プログラムの実行中にクラスやメンバーの情報を取得し、動的に操作することができる仕組みです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

・実行時に変更がないなら1. ・実行時に変更があるなら2. がよいと思います。 1.であれば,多言語化対応もGUI上で可能です。 で,リフレクションというのは,「実行時の名前によるクラスやメンバ等へのアクセス手段」です。 あまり使われる物ではないですし,使うことを推奨はしませんが, ・クラスの生成 ・メソッドの呼び出し ・フィールドやプロパティへの値の設定および値の呼び出し ・イベントへのハンドラの追加や削除 などができます。特に,先頭のクラスの生成を使うと,プラグイン機能を実装できます。 # .NET Framework 3.5ではSystem.AddInという便利なものがありますが。 なお, Dim text1 As System.Windows.Forms.TextBox という宣言があるとして, text1.Text = "ABC" をリフレクション使って書くと, Dim text1Type As System.Type = text1.GetType() Dim textProp As System.Reflection.PropertyInfo = text1Type.GetProperty("Text") textProp.SetValue(text1, "ABC", Nothing) のようになります。 ・読みにくい ・重い ・実行時までエラー検出ができない という問題点があるので,本当に必要な場合のみ使うことをお勧めします。 プラグインでも,作ったインスタンスをインターフェイスに押し込めてあとはリフレクションは使わないのが普通です。 MSDN: Type.GetProperty メソッド (String) (System) http://msdn.microsoft.com/ja-jp/library/kz0a8sxy(VS.80).aspx MSDN: PropertyInfo クラス (System.Reflection) http://msdn.microsoft.com/ja-jp/library/system.reflection.propertyinfo(VS.80).aspx MSDN: PropertyInfo.SetValue メソッド (Object, Object, Object[]) (System.Reflection) http://msdn.microsoft.com/ja-jp/library/xb5dd1f1(VS.80).aspx

rescue98
質問者

お礼

ありがとうございます。 リフレクションは使わないということですね。 大変為になりました。

関連するQ&A