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

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

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

リフレクションはどういったものですか? プロパティ名・プロパティ値を取得して表示するのに必要不可欠な概念らしいですが、 現在は、↓のように代入しているか、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(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

  • Visual StudioC#で、変数を見る機能

    Visual StudioC#には、作ったプログラムを実行しているときに変数がどんな値になっているのかを見る機能って無いのでしょうか? Microsoft Visual Studio 2010 Expressを使っています。 例えば、 ボタン1を押す→A=1代入 ボタン2を押す→B=2代入 ボタン3を押す→C=3代入 上のだと、今までだとテキストボックス3つに各変数の値を表示していました。でもいちいち全てをそんなデバッグするの面倒です・・・実行中に直接、Visual Studio上で変数の値を見ることってできないのでしょうか? よろしくお願いします。

  • visual studio 2008 expressで行数を表示

    visual studio 2008 expressで行数を表示 こんにちは。Microsoft Visual Studio 2008 Express を使用して開発を行いたいと思っています。 ソースを開いた時に、画面左端にソースの行数を表示させたいと思い、メニューバーの中身を探してみたのですが、どこから設定すればいいのか分かりませんでした。 ご存知の方がいらっしゃいましたら教えてください。

  • FindFirstFileについて教えてください。

    Visual Studio C++ 2010 Expressを利用して、C言語のプログラムを作成しています。 その中でFindFirstFileを使っています。 Visual Studio上でWin32コンソールアプリのプロジェクトを作成して、このプログラムをコンパイルしました。 プロジェクトのプロパティは変更していません。 コンパイルしたものを実行すると戻り値としてINVALID_HANDLE_VALUEが返ってきて、ファイルのリストを取得できませんでした。 一方で、コマンドプロンプト上でMakefileを作成し、同じソースをコンパイルした場合は、ファイルのリストを正常に取得することが出来ます。 従いまして、おそらくプログラムは問題ないと思います。 Visual Studioのプロジェクトで、何かプロパティの設定が必要でしょうか? 実行環境は、Windows7 64-bitです。 何かご存知の方いらっしゃいましたら、教えて頂けますか?

  • ソースリストをカラー印刷したい!!!

    Visual Studioのソース表示画面はカラフルで判別・理解がとても容易で助かります 一方そのソースを印刷するとモノクロで、パッと見では分からなくなってしまい困っております 画面と同じようにカラーでソースリストを印刷したいのですが、プリンタ設定・ページ設定などを見ても指定方法が分りません どの様にすればカラーのリストが印刷できるかご指導願います

  • ユーザー名・作成者について(Visual Studio)

    Wordファイルなどはプロパティを見ると 概要の欄に作成者として登録してるユーザー名が表示されますが Visual Studioで作ったものも概要の欄があります、ココには何も表示されなかったのですが気になったところが Visual Studioで作ったファイルも調べると作成者がばれる、というか分かるものなのでしょうか? ユーザー名が本名なので…

  • 「参照設定」で参照が追加できない

    Visual Studio 2005 「参照設定」から参照の追加が選択できない 「ソリューションエクスプローラ」の「プロパティページ」アイコンをクリックして表示されるプロパティページから参照の追加をしようとしています。 「参照の追加(D)」をクリックして「.NET」タブをクリックし、追加したいコンポーネント名を選択して「OK」をクリックすれば追加されるものと思っておりますが、何度やっても追加されません。 「更新」ボタンをクリックしても追加されません。プロパティページを「OK」ボタンをクリックして閉じ、「すべてを保存」をクリックしてVisualStudioを再起動しても追加されていません。 参照の設定を追加するために、別の設定が必要なのでしょうか。 また、「ソリューションエクスプローラ」から参照設定を確認しようと試みましたが、「全てのファイルを表示」アイコンがグレーになっており、クリックできません。 画面左上の「Webサイト」タブにある「全てのファイルを表示(O)」もグレーの状態でクリックできないため、参照設定の確認ができません。 参照設定するためにしなければならないことがあれば教えてください。 またこのような場合の解決策があれば教えてください。 どうぞよろしくお願いいたします。 環境 Windows XP Professional Edition Visuak Studio 2005 ASP.net 2.0 IIS 5.1

  • GUIアプリケーションの開発について

    Windowsで動作する一番簡単なGUIアプリケーションの作り方を教えてください。今までC言語とJavaの初歩的な学習は大学の授業でやりましたが、作ったプログラムはコンソール画面で動作するCUIのものばかりでした。したがってGUIのプログラミングは全く学んだことがありません。そこで、例えば電卓のような簡単なGUIアプリケーションの作る手順を教えてください。またはそのような内容のWebページを教えてくださると嬉しいです。言語はC言語かJavaでお願い致します。 会社などで実際にソフトを開発する際にVisual Studioがよく使われているそうなので、できればVisual Studioで開発する方法を教えてくださるとありがたいです。 インストールしてあるVisual Studioは「Visual Studio 2013 Ultimate」です。回答宜しくお願い致します。

  • Visual Studioランタイム組込み方法

    Visual Studio2005を使用して作成したソフトを友人に配布したところ動作しませんでした。 どうも、ランタイムがインストールされていないためのようです。 再配布可能パッケージをインストールしてもらえば良いのですが、 配布のたびに質問が来そうなので、ソフトにランタイムを組み込みたいのですが、 Visual Studio 2005を、どのように設定すればよろしいのでしょうか? ■ソフト内容 ・計算ソフト:エクセルのCSVファイルを読み込み、計算し、結果をCSVファイルへ出力 ・GUI    :コモンダイアログと、ファイル名を表示するためのダイアログ ・コンパイラ:Visual Studio 2005(製品版です) 以上、よろしくお願いします。

  • ASP.NETの画面表示

    作成いた画面をVisual Studio 2005で実行した場合にボタンコントロールが長く表示されたりと、画面表示がおかしくなってしまいます。 しかし、URLを開発サーバのポートを削除し、IISを直接していいた場合は正しく表示されるのですが、何が原因なのでしょうか? 特別な設定法があるのでしょうか? 教えてください、よろしくお願いいたします。

  • VS2008, VS2005 こんな私に合った本を教えてください。

    環境はVisual Studio 2008のVisual Basicで学びたいと考えています。 実際に所有しているのは2005ですが、いまさら古いパッケージで勉強する気にはなれません。 進化しているので。 今のレベルは、コンソールに文字列表示のレベルです。 どのライブラリのどの関数を使って、実現していけばいいか個人で判断できないレベルです。 言語の概念は理解できていません。 プロパティの設定していくところなど、本に書いてるのを丸写し状態です。 何がしたくて、どのレベルまでもっていきたいかというと、 GUIアプリケーションを作りたい。 そんな大規模ではなく、個人的に使用するので、DBに接続しないでテキストファイル(XML)を読み込んでテーブルを表示する。 まずはアプリケーションからテキストファイルを操作するところからやりたいと考えています。 しかし、どうやって作っていくのかわかりません。 ガワだけは作れます。そこに機能を追加していくのがさっぱり自力で解決していくことが出来ない状況です。 初心者の本、言語の説明はありますが、ライブラリの使い方の本がありません。 ここでつまずいています・・・ こんな私に合った本を教えてください。

専門家に質問してみよう