リフレクション (C# プログラミング ガイド)

更新 : 2007 年 11 月

リフレクションは、アセンブリ、モジュール、および型を記述する、Type 型のオブジェクトを提供します。リフレクションを使用すると、動的に型のインスタンスを作成したり、作成したインスタンスを既存のオブジェクトにバインドしたり、さらに既存のオブジェクトから型を取得してそのオブジェクトのメソッドを呼び出したり、フィールドやプロパティにアクセスしたりできます。コードで属性を使用している場合、リフレクションを使用すると、それらにアクセスできます。詳細については、「属性 (C# プログラミング ガイド)」を参照してください。

次の例は、すべての型が Object 基本クラスから継承した静的メソッド GetType を使用して変数の型を取得する簡単なリフレクションを示しています。

// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);

出力は次のとおりです。

System.Int32

次の例では、リフレクションを使用して、読み込まれたアセンブリの完全名を取得します。

// Using Reflection to get information from an Assembly:
System.Reflection.Assembly o = System.Reflection.Assembly.Load("mscorlib.dll");
System.Console.WriteLine(o.GetName());

出力は次のとおりです。

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

ms173183.alert_note(ja-jp,VS.90).gifメモ :

C# キーワードの protected と internal は IL では意味を持ちません。また、リフレクション API でも使用されません。IL では、ファミリおよびアセンブリという用語がこれに相当します。リフレクションを使用して internal メソッドを識別するには、IsAssembly プロパティを使用します。protected internal メソッドを識別するには、IsFamilyOrAssembly を使用します。

リフレクションの概要

リフレクションは、次の場合に役立ちます。

関連項目

詳細については以下を参照してください。

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 1.12 属性

  • 7.5.11 typeof 演算子

参照

概念

C# プログラミング ガイド

参照

アプリケーション ドメイン (C# プログラミング ガイド)

アセンブリとグローバル アセンブリ キャッシュ (C# プログラミング ガイド)