다음을 통해 공유


Type 클래스

클래스 형식, 인터페이스 형식, 배열 형식, 값 형식, 열거형 형식, 형식 매개 변수, 제네릭 형식 정의 및 개방형 생성 제네릭 형식이나 폐쇄형 생성 제네릭 형식에 대한 형식 선언을 나타냅니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
Public MustInherit Class Type
    Inherits MemberInfo
    Implements _Type, IReflect
‘사용 방법
Dim instance As Type
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.None)] 
public abstract class Type : MemberInfo, _Type, IReflect
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType::None)] 
public ref class Type abstract : public MemberInfo, _Type, IReflect
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
public abstract class Type extends MemberInfo implements _Type, IReflect
SerializableAttribute 
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.None) 
public abstract class Type extends MemberInfo implements _Type, IReflect

설명

TypeSystem.Reflection 기능의 루트이며 메타데이터에 액세스하는 주요 방법입니다. 클래스의 생성자, 메서드, 필드, 속성 및 이벤트에 대한 형식 선언과 클래스가 배포되는 모듈 및 어셈블리에 대한 정보를 가져오려면 Type의 멤버를 사용합니다.

한 형식을 나타내는 Type 개체는 고유합니다. 즉 두 개의 Type 개체 참조는 같은 형식을 나타내는 경우에만 같은 개체를 참조합니다. 이렇게 하면 참조 일치를 사용하여 Type 개체를 비교할 수 있습니다.

ReflectionPermission이 없으면 코드는 로드된 어셈블리의 public 멤버에만 액세스할 수 있습니다. 여기에는 Object.GetType에 대한 무제한 액세스, Type.GetType을 통해 내보낸 public 형식에 대한 액세스 및 GetTypeFromHandle에 대한 액세스가 포함되지만 이러한 액세스로 제한된 것은 아닙니다. FullNameAttributes와 같은 Type의 일부 속성에는 ReflectionPermission을 사용하지 않고 액세스할 수 있습니다.

Type은 여러 구현을 허용하는 추상 기본 클래스입니다. 시스템에서는 항상 파생 클래스인 RuntimeType을 제공합니다. 리플렉션 시 이름이 Runtime으로 시작하는 모든 클래스는 시스템의 각 개체에 대해 한 번씩만 만들어지며 비교 작업을 지원합니다.

참고

다중 스레드 시나리오에서는 static 데이터에 대한 액세스를 동기화하기 위해 Type 개체를 잠그지 않습니다. 사용자에게 제어 권한이 없는 다른 코드에서 클래스 형식을 잠글 수도 있습니다. 이 경우 교착 상태가 발생할 수 있습니다. 대신 private static 개체를 잠금으로써 정적 데이터에 대한 액세스를 동기화합니다.

이 클래스는 스레드로부터 안전하므로 이 형식의 인스턴스에서 여러 스레드를 동시에 읽을 수 있습니다. Type의 인스턴스는 다음 형식을 나타낼 수 있습니다.

  • 클래스

  • 값 형식

  • 배열

  • 인터페이스

  • 포인터

  • 열거형

  • 생성된 제네릭 형식 및 제네릭 형식 정의

  • 생성된 제네릭 형식, 제네릭 형식 정의 및 제네릭 메서드 정의의 형식 인수 및 형식 매개 변수

형식과 연관된 Type 개체에 대한 참조는 다음과 같은 방법으로 가져올 수 있습니다.

  • Object.GetType 메서드는 인스턴스의 형식을 나타내는 Type 개체를 반환합니다.

  • 정적 GetType 메서드는 정규화된 이름으로 지정된 형식을 나타내는 Type 개체를 반환합니다.

  • Module.GetTypes, Module.GetTypeModule.FindTypes 메서드는 모듈에 정의된 형식을 나타내는 Type 개체를 반환합니다. 첫 번째 메서드는 모듈에 정의된 모든 public 및 private 형식에 대한 Type 개체의 배열을 가져오는 데 사용할 수 있습니다. Assembly.GetModule 또는 Assembly.GetModules 메서드를 통해서나 Type.Module 속성을 통해 Module의 인스턴스를 가져올 수 있습니다.

  • FindInterfaces 메서드는 형식에서 지원하는 인터페이스 형식의 필터링 목록을 반환합니다.

  • GetElementType 메서드는 요소를 나타내는 Type 개체를 반환합니다.

  • GetInterfacesGetInterface 메서드는 형식이 지원하는 인터페이스 형식을 나타내는 Type 개체를 반환합니다.

  • GetTypeArray 메서드는 임의의 개체 집합으로 지정된 형식을 나타내는 Type 개체의 배열을 반환합니다. 개체는 Object 형식의 배열을 사용하여 지정됩니다.

  • GetTypeFromProgIDGetTypeFromCLSID 메서드는 COM 상호 운용성을 위해 제공되는 것으로서 ProgID 또는 CLSID로 지정된 형식을 나타내는 Type 개체를 반환합니다.

  • GetTypeFromHandle 메서드는 상호 운용성을 위해 제공되는 것으로서 클래스 핸들로 지정된 형식을 나타내는 Type 개체를 반환합니다.

  • C# typeof 연산자, C++ typeid 연산자 및 Visual Basic GetType 연산자는 형식에 대한 Type 개체를 구합니다.

  • MakeGenericType 메서드는 생성된 제네릭 형식을 나타내는 Type 개체를 반환합니다. 생성된 제네릭 형식은 ContainsGenericParameters 속성이 true를 반환하면 개방형 생성 형식이고, 그렇지 않으면 폐쇄형 생성 형식입니다. 제네릭 형식은 닫힌 경우에만 인스턴스화할 수 있습니다.

  • MakeArrayType, MakePointerTypeMakeByRefType 메서드는 각각 지정된 형식의 배열, 지정된 형식에 대한 포인터 및 참조 매개 변수(C#의 경우 ref, Visual Basic의 경우 ByRef)의 형식을 나타내는 Type 개체를 반환합니다.

참고

파생 클래스는 호출 코드의 기본 클래스에 있는 protected 멤버에 액세스할 수 있습니다. 또한 호출 코드의 어셈블리에 대한 어셈블리 멤버에도 액세스할 수 있습니다. 대체로 초기 바인딩된 코드에 액세스할 수 있으면 런타임에 바인딩된 코드에도 액세스할 수 있습니다.

참고

다른 인터페이스를 확장하는 인터페이스는 확장된 인터페이스에 정의된 메서드를 상속하지 않습니다.

상속자 참고 사항 Type에서 상속하는 경우 GUID, InvokeMember(String,BindingFlags,Binder,Object,Object[],ParameterModifier[],CultureInfo,String[]), Module, Assembly, TypeHandle, FullName, Namespace, AssemblyQualifiedName, BaseType, GetConstructorImpl, GetConstructors(BindingFlags), GetMethodImpl, GetMethods(BindingFlags), GetField(String,BindingFlags), GetFields(BindingFlags), GetInterface(String,Boolean), GetInterfaces, GetEvent(String,BindingFlags), GetEvents(BindingFlags), GetPropertyImpl, GetProperties(BindingFlags), GetNestedType(String,BindingFlags), GetNestedTypes(BindingFlags), GetAttributeFlagsImpl, IsArrayImpl, IsByRefImpl, IsPointerImpl, IsPrimitiveImpl, IsCOMObjectImpl, GetElementType, HasElementTypeImpl, UnderlyingSystemType, MemberInfo.Name, MemberInfo.IsDefined, MemberInfo.GetCustomAttributes, GetCustomAttributes 등의 멤버를 재정의해야 합니다.

상속 계층 구조

System.Object
   System.Reflection.MemberInfo
    System.Type
       System.Reflection.Emit.EnumBuilder
       System.Reflection.Emit.GenericTypeParameterBuilder
       System.Reflection.Emit.TypeBuilder
       System.Reflection.TypeDelegator

스레드로부터의 안전성

이 형식은 스레드로부터 안전합니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

Type 멤버
System 네임스페이스
Object 클래스
System.Reflection
ReflectionPermission