2009-05-25 6 views
9

重複の可能性:
When do you use reflection? Patterns/anti-patterns
What exactly is Reflection and when is it a good approach?.NETでのReflectionはどのような用途ですか?

.NETでの反射の必要性は何ですか?便利な状況は何ですか?

+0

他に何も働かないと便利です。ちょうどウェブ世界のjavascriptのように。 :) –

+2

重複:http://stackoverflow.com/questions/429962/when-do-you-use-reflection-patterns-anti-patterns ... ... ... ... も:http://stackoverflow.com/questions/864332/what-exactly-is-reflection-and-when-is-it-a-good-approach – Shog9

答えて

10

基本的なシリアライゼーションルーチンを作成していれば、オブジェクトをXMLにシリアライズします。どんなオブジェクトでも動作するように、それをどのようにして汎用性のあるものにするのですか?すべてのプロパティを知っているクラスがあれば、簡単に "ToXml()"関数を書くことができます。ここでは、すべてのプロパティをXMLに手動で書き出します。これをANYオブジェクトにも拡張したいのですが?その場合は、実行時にプロパティを反映させ、XMLに書き出す必要があります。

これにはさらに多くの用途がありますが、これが最初に思い浮かぶものです。

3

私はWikipedia article on reflectionはかなり良いと思います:コンピュータサイエンスの

、反射はコンピュータプログラム は、独自の 構造や行動を観察し、修正することが可能な プロセスです。 反射によって駆動されるプログラミングパラダイムは、反射 プログラミングと呼ばれます。メタプログラミングの特別な種類の です。多くのコンピュータアーキテクチャで

、 プログラム命令は データとして記憶されている - したがって 命令とデータとの間の区別は、単に情報をコンピュータと プログラミング言語によって で処理する方法の 問題です。通常、 「命令」は「実行され」、 「データ」は「処理されました」。しかし、一部の言語の では、プログラムも 命令をデータとして扱い、 を反映させることができます。 の変更。反射は、最も一般的に のSmalltalkとスクリプト言語のような高レベルの仮想 マシンプログラミング言語で使用される あり、 はあまり一般的で明らか 型付けされたおよび/または静的に型付けされたそのような

JavaやCとして プログラミング言語で使用されます

Reflectionを使用すると、実行時にオブジェクトの種類に関する情報を取得できます。これは、シリアライゼーションとオブジェクト・リレーショナル・マッピングを含む多くの状況で役に立ちます。

+0

しかし、これに限定されませんか? – jedmao

1

反射は、あなたのオブジェクトがある時点コンパイル時に知っていないときに使用されるか...何のアクションを行うか、どのような性質のために

あなたがタイプXのすべてのオブジェクトを見つけるためにリフレクションを使用することができます与えられたアセンブリ、またはその名前でいくつかのメソッドを呼び出す(dbまたはconfigファイルからフェッチされます)、プロパティを設定するための同じこと....そのようなもの(これらは我々が使用した場合です)

4

反射には多くの用途があります。 。NET Frameworkはserializationdata bindingを使用しますが、Reflector、FxCop、NUnit、ORMデータベースフレームワークなどのコードを調べるツールの作成にも使用できます。実行時にオブジェクトに関する特定のものをDependency Injection Frameworksに記録することから、さまざまな用途があります。また、カスタム属性で実行されるように、実行時にメソッドを動的に実行したりプロパティを設定したりするのにも使用できます。また、metaprogrammingや自己修正コードなどの高レベルプログラミングでも使用できます。

3

それはあなたのコード自体ではなく、通常のビジネスの問題についてコーディングしているときである、メタプログラミングのために使われています

2

例えば、あなたのアプリケーションをテストするときにも非常に便利です単体テストまたは他のタイプのテストフレームワークを使用します。リフレクションを使用することによって、たとえばxmlファイル(またはその他の適切な形式の入力データファイル)を作成し、プログラムでそれを解析し、ファイルに定義されているメソッドを呼び出させることができます。これはFitnesseの仕組みです。

関連する問題