
リフレクションはどういったものですか?
プロパティ名・プロパティ値を取得して表示するのに必要不可欠な概念らしいですが、
現在は、↓のように代入しているか、Visual Studio 2005のプロパティ画面でGUI上で直接設定しています。
ボタン名.プロパティ名 = プロパティ値
GUI上で直接設定すると、ソースには表示されないので、プロパティの設定はこの3つだとどれで設定するのがいいですか?
1.Visual Studio 2005のプロパティ画面でGUI上で直接設定
2.ボタン名.プロパティ名 = プロパティ値
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 …
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 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[VBA] Classから他のClassを呼...
-
共通モジュールでDBへの接続と...
-
バウンドプロパティとは?
-
オブジェクト指向とは?
-
ExcelVBAのコントロールの種類...
-
eclipseのデバッグ中に変数の値...
-
VBA シートのボタン名を変更し...
-
Microsoft Formsの「個人情報や...
-
worksheetFunctionクラスのVloo...
-
VBAがブレークモードになっ...
-
実行時エラー 438になった時の...
-
VB.net でトグルボタンを実現し...
-
ExcelVBAでListViewが使用できない
-
ListBoxで改行したい
-
VBA ユーザーフォームの Keypre...
-
DataGridViewで行の展開みたい...
-
ユーザーフォームを表示中にシ...
-
【C#/Java?】try-catchでcatch...
-
VBAからPDFファイルにパスワー...
-
ウォッチ式の文字数制限について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
Excel vbaで複数のテキストボッ...
-
VB.netで、動的な型変換を行い...
-
VB.NETにて文字列で指定した関...
-
他のモジュールのプロシージャ...
-
'StructLayout' の仕様について
-
【JSF】バッキングビーンから別...
-
WPFでCanvas の子要素にアクセ...
-
VBA オブジェクト追加
-
用語の意味の違いを教えてくだ...
-
バウンドプロパティとは?
-
VB6で外部から静的アクセスが可...
-
コンポーネント指向って、どの...
-
C# Process.Start で標準入力
-
オブジェクト指向とは?
-
離れた場所のロールオーバーの...
-
C#でのWebRequestでのPOSTについて
-
実行時エラー 438になった時の...
-
worksheetFunctionクラスのVloo...
おすすめ情報