リフレクション (C#)Reflection (C#)

リフレクションは、アセンブリ、モジュール、および型を記述する (Type 型の) オブジェクトを提供します。Reflection provides objects (of type Type) that describe assemblies, modules and types. リフレクションを使用すると、動的に型のインスタンスを作成したり、作成したインスタンスを既存のオブジェクトにバインドしたり、さらに既存のオブジェクトから型を取得してそのオブジェクトのメソッドを呼び出したり、フィールドやプロパティにアクセスしたりできます。You can use reflection to dynamically create an instance of a type, bind the type to an existing object, or get the type from an existing object and invoke its methods or access its fields and properties. コードで属性を使用している場合は、リフレクションを使用してそれらにアクセスできます。If you are using attributes in your code, reflection enables you to access them. 詳細については、「属性」を参照してください。For more information, see Attributes.

次の例は、GetType メソッドを使用して変数の型を取得する簡単なリフレクションを示しています。このメソッドは、Object 基底クラスからすべての型に継承される静的メソッドです。Here's a simple example of reflection using the static method GetType - inherited by all types from the Object base class - to obtain the type of a variable:

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

出力は次のようになります。The output is:

System.Int32

次の例では、リフレクションを使用して、読み込まれたアセンブリの完全名を取得します。The following example uses reflection to obtain the full name of the loaded assembly.

// Using Reflection to get information from an Assembly:  
System.Reflection.Assembly info = typeof(System.Int32).Assembly;  
System.Console.WriteLine(info);  

出力は次のようになります。The output is:

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

注意

C# の protected キーワードと internal キーワードは、IL では意味を持たないため、リフレクション API でも使用されません。The C# keywords protected and internal have no meaning in IL and are not used in the reflection APIs. IL では、"ファミリ" および "アセンブリ" という用語がこれに相当します。The corresponding terms in IL are Family and Assembly. リフレクションを使用して internal メソッドを指定するには、IsAssembly プロパティを使用します。To identify an internal method using reflection, use the IsAssembly property. protected internal メソッドを指定するには、IsFamilyOrAssembly を使用します。To identify a protected internal method, use the IsFamilyOrAssembly.

リフレクションの概要Reflection Overview

リフレクションは、次の場合に役立ちます。Reflection is useful in the following situations:

詳細情報For more information:

参照See Also