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

C#에서 지정된 개체의 유형(Type) 핸들 가져오는 방법

C#에서 지정된 개체의 유형(Type)에 대한 핸들을 가져오려면 Type.GetTypeHandle() 메서드를 사용합니다. 이 메서드는 개체의 유형을 가리키는 경량화된 핸들인 RuntimeTypeHandle 구조체를 반환하며, 필요할 경우 Type.GetTypeFromHandle() 메서드를 통해 원래의 Type 개체로 다시 복원할 수 있습니다.

이러한 핸들은 실제 Type 개체를 직접 참조하지 않으면서도 유형 정보를 효율적으로 전달해야 할 때 유용하게 활용됩니다.

예제 1

다음은 System.Type 클래스 자체의 유형 핸들을 가져온 뒤, 이를 다시 Type 개체로 변환하여 해당 형식의 특성(Attributes)과 참조된 유형을 출력하는 예제입니다.

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 형식에 대해 동일한 과정을 적용해 보겠습니다.

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

두 예제 모두 GetTypeHandle로 핸들을 얻은 후 GetTypeFromHandle로 되돌리는 과정을 보여주며, 출력되는 특성 값은 해당 형식이 갖는 공통 속성(AutoLayout, AnsiClass, Serializable 등)을 나타냅니다.