ホームページ  >  記事  >  バックエンド開発  >  C#のリフレクションとは何ですか?

C#のリフレクションとは何ですか?

清浅
清浅オリジナル
2019-04-28 11:04:5316429ブラウズ

リフレクションとは、アセンブリ、モジュール、および型をカプセル化するオブジェクトを提供することを指します。リフレクションを通じて、型のインスタンスを動的に作成し、型を既存のオブジェクトにバインドできます。これは、アセンブリ内のオブジェクトのチェックとインスタンス化によく使用されます。型と新しい型の構築ランタイムなど

この記事の主な内容は、C# におけるリフレクションとは何かを詳しく紹介することであり、あるリファレンス関数が含まれているので、皆さんの参考になれば幸いです。

##[おすすめコース: C#のリフレクションとは何ですか?

C# チュートリアル]とはリフレクション

リフレクションとは、アセンブリ、モジュール、および型をカプセル化するオブジェクト (型型) を提供することを指します。リフレクションを使用すると、型のインスタンスを動的に作成したり、型を既存のオブジェクトにバインドしたり、既存のオブジェクトから型を取得してそのメソッドを呼び出したり、そのフィールドやプロパティにアクセスしたりできます。コードで属性が使用されている場合は、リフレクションを使用してアクセスできます。

リフレクションの使用シナリオ

プログラム メタデータへのアクセスを必要とする機能。 アセンブリ内の型を確認してインスタンス化します。

実行時に新しい型を構築します。

System.Reflection.Emit のクラスを使用します。

遅延バインディングを実行し、実行時に作成された型のメソッドにアクセスする

リフレクションを使用して型を取得する方法

型情報を取得するには 2 つの方法があります1 つはインスタンス オブジェクトを取得する方法で、もう 1 つは Type.GetType メソッドと Assembly.GetType メソッドを使用してインスタンス オブジェクトを取得する方法です。

インスタンス オブジェクトを取得する

このメソッドでは、このインスタンス オブジェクトはオブジェクトへの参照またはインターフェイス参照として取得される可能性がありますが、その正確な型は不明です。さらに詳しく知りたい場合は、System.Object## を呼び出してください。 # 上記で宣言したメソッド GetType は、インスタンス オブジェクトの型オブジェクトを取得するために使用されます。たとえば、あるメソッドでは、渡されたパラメーターが特定のインターフェイスを実装しているかどうかを判断する必要があります。実装されている場合は、そのインターフェイスのメソッドを呼び出します:

…
public  void  Process(  object  processObj  ){
Type  t  =  processsObj.GetType();
if(  t.GetInterface(“ITest”)  !=null  )                    
…}…

Type.GetType メソッドと Assembly.GetType メソッド

型を取得する別の方法は、次のような Type.GetType メソッドと Assembly.GetType メソッドを使用することです。 ##
Type  t  =  Type.GetType(“System.String”);

クラスを検索するには、そのクラスが配置されているアセンブリを指定するか、取得した Assembly インスタンスで GetType を呼び出す必要があることに注意してください。このアセンブリの型は、型名のみを書き込めます。別の例外は、mscorlib.dll です。このアセンブリで宣言された型は、アセンブリ名を省略することもできます (.Net アセンブリがコンパイルされるとき、アセンブリ名は次のように引用されます) mscorlib.dll (コンパイル中に参照しないように明示的に指定されていない限り)、例:

System.String

は、上記の mscorlib.dll で宣言されています。

Type t = Type.GetType("System.String")

は正しいです。 System.Data.DataTableSystem.Data.dll で宣言され、その後

Type.GetType("System.Data.DataTable")

null 参照のみを取得できます。 So

Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0,  
Culture=neutral,  PublicKeyToken=b77a5c561934e089");
要約: 上記がこの記事の全内容です。皆様のお役に立てれば幸いです。

以上がC#のリフレクションとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。