리플렉션(C# 및 Visual Basic)
리플렉션에서는 어셈블리, 모듈 및 형식을 설명하는 Type 형식의 개체를 제공합니다. 리플렉션을 사용하여 형식의 인스턴스를 동적으로 만들거나, 형식을 기존 개체에 바인딩하거나, 기존 개체에서 형식을 가져오고 해당 메서드를 호출하거나 해당 필드와 속성에 액세스할 수 있습니다. 코드에서 특성을 사용하는 경우 리플렉션을 통해 해당 특성에 액세스할 수 있습니다. 자세한 내용은 특성을 사용하여 메타데이터 확장을 참조하십시오.
다음은 변수의 형식을 가져오기 위해 Object 기본 클래스의 모든 형식에서 상속되는 정적 메서드 GetType을 사용하는 리플렉션의 간단한 예제입니다.
' Using GetType to obtain type information:
Dim i As Integer = 42
Dim type As System.Type = i.GetType()
System.Console.WriteLine(type)
// 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:
Dim info As System.Reflection.Assembly = GetType(System.Int32).Assembly
System.Console.WriteLine(info)
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);
출력 결과는 다음과 같습니다.
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
참고
C# 키워드 protected 및 internal은 IL에서 의미가 없으며 리플렉션 API에서 사용되지 않습니다. IL에서 해당 용어는 패밀리 및 어셈블리입니다. 리플렉션을 사용하여 internal 메서드를 식별하려면 IsAssembly 속성을 사용하고, protected internal 메서드를 식별하려면 IsFamilyOrAssembly를 사용합니다.
리플렉션 개요
리플렉션은 다음과 같은 상황에서 유용합니다.
프로그램의 메타데이터에 있는 특성에 액세스해야 하는 경우. 자세한 내용은 특성에 저장된 정보 검색을 참조하십시오.
어셈블리에 있는 형식을 검사하고 인스턴스화해야 하는 경우
런타임에 새 형식을 빌드해야 하는 경우. System.Reflection.Emit의 클래스를 사용합니다.
런타임에 바인딩을 수행하고 런타임에 작성된 형식의 메서드에 액세스하려는 경우. 동적으로 형식 로드 및 사용 항목을 참조하십시오.
관련 단원
자세한 내용은 다음을 참조하십시오.
참고 항목
참조
응용 프로그램 도메인(C# 및 Visual Basic)