dポイントプレゼントキャンペーン実施中!

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

プロパティ名・プロパティ値を取得して表示するのに必要不可欠な概念らしいですが、

現在は、↓のように代入しているか、Visual Studio 2005のプロパティ画面でGUI上で直接設定しています。

ボタン名.プロパティ名 = プロパティ値

GUI上で直接設定すると、ソースには表示されないので、プロパティの設定はこの3つだとどれで設定するのがいいですか?

1.Visual Studio 2005のプロパティ画面でGUI上で直接設定
2.ボタン名.プロパティ名 = プロパティ値
3.リフレクション

リフレクションってなんですか・・・

A 回答 (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 …
MSDN: PropertyInfo クラス (System.Reflection)
http://msdn.microsoft.com/ja-jp/library/system.r …
MSDN: PropertyInfo.SetValue メソッド (Object, Object, Object[]) (System.Reflection)
http://msdn.microsoft.com/ja-jp/library/xb5dd1f1 …
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2009/06/20 20:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!