C#의 Type.GetTypeHandle() 메서드는 지정된 객체의 타입(Type)에 대한 핸들을 가져오는 데 사용됩니다. 이 메서드는 RuntimeTypeHandle 구조체를 반환하며, 런타임 환경에서 타입 정보를 효율적으로 참조할 수 있도록 도와줍니다.
구문
다음은 Type.GetTypeHandle() 메서드의 기본 구문입니다.
public static RuntimeTypeHandle GetTypeHandle(object ob);
여기서 매개변수 ob는 타입 핸들을 가져올 대상 객체를 의미합니다.
예제 1
아래 예제는 System.Type 타입에 대해 Type.GetTypeHandle() 메서드를 사용하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main(){
Type type1 = typeof(System.Type);
RuntimeTypeHandle typeHandle = Type.GetTypeHandle(type1);
Type type = Type.GetTypeFromHandle(typeHandle);
Console.WriteLine("Attributes = " + type.Attributes);
Console.WriteLine("Type Referenced = "+ type);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Attributes = AutoLayout, AnsiClass, Class, Serializable, BeforeFieldInit Type Referenced = System.RuntimeType
예제 2
이번에는 double 타입을 대상으로 Type.GetTypeHandle() 메서드를 적용해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Type type1 = typeof(double);
RuntimeTypeHandle typeHandle = Type.GetTypeHandle(type1);
Type type = Type.GetTypeFromHandle(typeHandle);
Console.WriteLine("Attributes = " + type.Attributes);
Console.WriteLine("Type Referenced = "+ type);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Attributes = AutoLayout, AnsiClass, Class, Serializable, BeforeFieldInit Type Referenced = System.RuntimeType
핵심 포인트
Type.GetTypeHandle() 메서드는 Type.GetTypeFromHandle() 메서드와 쌍을 이루어 사용됩니다. 즉, GetTypeHandle()로 얻은 핸들은 GetTypeFromHandle()을 통해 다시 원래의 Type 객체로 복원할 수 있습니다. 이러한 특성 덕분에 타입 정보를 경량화된 형태로 저장하거나 전달해야 하는 시나리오에서 유용하게 활용됩니다.