2017-06-20 5 views
-3

C#でのReflectionの目的について知りたいと思います。私は 'Stack Overflow'など、さまざまなサイトでさまざまな記事を書いてきましたが、それでもReflectionを説明する包括的な回答は見つかりませんでした。 Reflectionを使用する必要がある状況に直面したリアルタイムのシナリオを説明できる回答があれば、非常に役に立ちます。リアルタイムシナリオにおけるC#での反射の使用と目的

+3

https://stackoverflow.com/documentation/c%23/28/reflection#t=201706200705347521146 – HimBromBeere

+0

すべてのORMは、オブジェクトのプロパティは、彼らがそのように命名されている方法を見つけるための方法が必要です適切なSQL文を生成できます。 –

+0

@JanesAbouChleihは正確ではありません。それは、用途や反射のわずか10%です。 –

答えて

2

プラグインシステムを構築するとします。あなたのアプリケーションがあなたのプラグインについて知っておく必要がある最小限のものがあります。

  • 各プラグインは、各プラグインがPluginStartは、名前空間のプラグインで
  • あるPluginStart
  • というクラス
  • PluginStartは、文字列型
のプロパティメッセージを持っているを持っているDLL
  • である:以下とさせて頂きます

    プラグインをロードしてMessageプロパティの値を取得する場合は、リフレクションを使用してプラグインを実行する必要があります。簡単な例は、次のようなものです。

    Assembly dll = Assembly.LoadFile(dllPath); 
    Type importStartType = dll?.GetType("Plugin.pluginStart"); 
    string message = importStartType?.GetField("Message")?.GetValue(importStartType)?.ToString(); 
    
  • 0

    .NET FrameworkのReflection APIを使用すると、実行時にプログラムでタイプ(アセンブリ)情報を取得できます。また、.NET Reflectionを使用してレイトバインディングを実現することもできます。実行時に、Reflection機構はPEファイルを使用してアセンブリに関する情報を読み取ります。リフレクションを使用すると、コンパイル時に使用できなかったコードを使用できます。 .NET Reflectionは、アプリケーションが自身に関する情報を収集し、それ自体で操作することを可能にします。アセンブリ内のすべての型を検索したり、アセンブリ内のメソッドを動的に呼び出すために効果的に使用できます。これには、オブジェクトのタイプ、プロパティ、メソッド、およびイベントに関する情報が含まれます。リフレクションでは、型のインスタンスを動的に作成したり、型を既存のオブジェクトにバインドしたり、既存のオブジェクトから型を取得したり、そのメソッドを呼び出したり、そのフィールドやプロパティにアクセスしたりできます。リフレクションを使用して属性情報にアクセスすることもできます。

    これが役に立ちます。

    Why is the use of reflection in .NET recommended?

    http://www.c-sharpcorner.com/uploadfile/keesari_anjaiah/reflection-in-net/

    関連する問題