Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Type.GetTypeHandle() 메서드 완벽 정리 - 타입 핸들 조회 방법

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 객체로 복원할 수 있습니다. 이러한 특성 덕분에 타입 정보를 경량화된 형태로 저장하거나 전달해야 하는 시나리오에서 유용하게 활용됩니다.