Type.GetType 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 형식을 나타내는 Type 개체를 가져옵니다.
오버로드
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) |
형식을 찾을 수 없는 경우 대/소문자를 구분하는 검색을 수행할지 여부 및 예외를 throw할지를 지정하고 어셈블리 및 형식을 확인할 수 있는 사용자 지정 메서드를 선택적으로 제공하여, 지정된 이름의 형식을 가져옵니다. |
GetType() |
현재 Type를 가져옵니다. |
GetType(String) |
대/소문자 구분 검색하여 지정된 이름의 Type을 가져옵니다. |
GetType(String, Boolean) |
대/소문자를 구분하여 검색하고 형식이 없으면 예외를 throw할지를 지정하여, 지정된 이름의 Type을 가져옵니다. |
GetType(String, Boolean, Boolean) |
대/소문자를 구분하여 검색할지 여부와 형식이 없으면 예외를 throw할지 여부를 지정하여, 지정된 이름의 Type을 가져옵니다. |
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) |
어셈블리 및 형식을 확인할 수 있는 사용자 지정 메서드를 선택적으로 제공하여, 지정된 이름의 형식을 가져옵니다. |
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) |
형식을 찾을 수 없는 경우 예외를 throw할지를 지정하고 어셈블리 및 형식을 확인할 수 있는 사용자 지정 메서드를 선택적으로 제공하여, 지정된 이름의 형식을 가져옵니다. |
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
형식을 찾을 수 없는 경우 대/소문자를 구분하는 검색을 수행할지 여부 및 예외를 throw할지를 지정하고 어셈블리 및 형식을 확인할 수 있는 사용자 지정 메서드를 선택적으로 제공하여, 지정된 이름의 형식을 가져옵니다.
public:
static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError, bool ignoreCase);
public static Type? GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError, bool ignoreCase);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean, ignoreCase As Boolean) As Type
매개 변수
- typeName
- String
가져올 형식의 이름입니다.
typeResolver
매개 변수가 제공되는 경우 형식 이름은 typeResolver
에서 확인 가능한 임의의 문자열일 수 있습니다. 매개 변수가 assemblyResolver
제공되거나 표준 형식 확인이 사용되는 typeName
경우 형식이 현재 실행 중인 어셈블리 또는 mscorlib.dll/System.Private.CoreLib.dll 없는 한 어셈블리 정규화된 이름(참조 AssemblyQualifiedName)이어야 합니다. 이 경우 네임스페이스에서 정규화된 형식 이름을 제공하기에 충분합니다.
- assemblyResolver
- Func<AssemblyName,Assembly>
typeName
에 지정된 어셈블리를 찾고 반환하는 메서드입니다. 어셈블리 이름이 assemblyResolver
에 AssemblyName 개체로 전달됩니다.
typeName
에 어셈블리의 이름이 포함되어 있지 않으면 assemblyResolver
가 호출되지 않습니다.
assemblyResolver
가 제공되지 않으면 표준 어셈블리 확인이 수행됩니다.
주의: 알 수 없거나 신뢰할 수 없는 호출자의 메서드를 전달하지 마세요. 그렇게 하면 권한이 상승되어 악성 코드가 실행될 수 있습니다. 제공하는 메서드 또는 친숙한 메서드만 사용합니다.
typeName
또는 표준 어셈블리 확인에서 반환된 어셈블리에서 assemblyResolver
에 지정된 형식을 찾고 반환하는 메서드입니다. 어셈블리가 제공되지 않는 경우 이 메서드에서 어셈블리를 제공할 수 있습니다. 이 메서드는 또한 대/소문자를 구분하지 않는 검색을 수행할지를 지정하는 매개 변수를 사용하며, 해당 매개 변수에 ignoreCase
의 값이 전달됩니다.
주의: 알 수 없거나 신뢰할 수 없는 호출자의 메서드를 전달하지 마세요.
- throwOnError
- Boolean
형식을 찾을 수 없는 경우 예외를 throw하려면 true
이고, false
을 반환하려면 null
입니다. 또한 false
를 지정하면 다른 예외 조건 중 일부(모두 아님)가 표시되지 않습니다. 예외 섹션을 참조하세요.
- ignoreCase
- Boolean
true
에 대해 대/소문자를 구분하지 않는 검색을 수행하려는 경우 typeName
이고, false
에 대해 대/소문자를 구분하는 검색을 수행하려는 경우 typeName
입니다.
반환
지정된 이름의 형식입니다. 형식을 찾을 수 없는 경우에는 throwOnError
매개 변수가 null
을 반환할지 아니면 예외를 throw할지 지정합니다. 경우에 따라서는 throwOnError
값과 상관없이 예외가 throw됩니다. 예외 섹션을 참조하세요.
예외
typeName
이(가) null
인 경우
클래스 이니셜라이저가 호출되고 예외를 throw합니다.
throwOnError
가 true
이고 형식을 찾을 수 없습니다.
또는
throwOnError
가 true
이고 typeName
이 포함된 탭 등의 잘못된 문자를 포함합니다.
또는
throwOnError
가 true
이고 typeName
이 빈 문자열입니다.
또는
throwOnError
가 true
이고 typeName
이 잘못된 크기를 가진 배열 형식을 나타냅니다.
또는
typeName
이 TypedReference 배열을 나타냅니다.
typeName
이 형식 이름 및 어셈블리 이름으로 구문 분석되면 오류가 발생합니다(예: 단순 형식 이름에 이스케이프되지 않은 특수 문자가 포함된 경우).
또는
throwOnError
가 true
이고 typeName
이 잘못된 구문(예: "MyType[,*,]")을 포함합니다.
또는
typeName
이 형식 인수 중 하나로 포인터 형식, ByRef
형식 또는 Void 를 가진 제네릭 형식을 나타냅니다.
또는
typeName
은 형식 인수의 개수가 잘못된 제네릭 형식을 나타냅니다.
또는
typeName
은 제네릭 형식을 나타내며 그 형식 인수 중 하나가 해당 형식 매개 변수에 대한 제약 조건을 충족하지 않습니다.
throwOnError
가 true
이고 어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾을 수 없습니다.
어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾았지만 로드할 수 없습니다.
또는
typeName
이 잘못된 어셈블리 이름을 포함합니다.
또는
typeName
이 형식 이름이 없는 올바른 어셈블리 이름입니다.
어셈블리 또는 해당 종속성 중 하나가 현재 로드된 런타임에 유효한 어셈블리가 아닙니다.
설명
이 API에 대한 자세한 내용은 Type.GetType에 대한 추가 API 설명을 참조하세요.
적용 대상
GetType()
GetType(String)
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
대/소문자 구분 검색하여 지정된 이름의 Type을 가져옵니다.
public:
static Type ^ GetType(System::String ^ typeName);
public static Type GetType (string typeName);
public static Type? GetType (string typeName);
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type
매개 변수
- typeName
- String
가져올 형식에 대한 어셈블리로 한정된 이름입니다. AssemblyQualifiedName을 참조하세요. 형식이 현재 실행 중인 어셈블리 또는 mscorlib.dll/System.Private.CoreLib.dll 있는 경우 네임스페이스로 정규화된 형식 이름을 제공하기에 충분합니다.
반환
지정된 이름의 형식이 있으면 이를 반환하고 그렇지 않으면 null
을 반환합니다.
예외
typeName
이(가) null
인 경우
클래스 이니셜라이저가 호출되고 예외를 throw합니다.
typeName
이 형식 인수 중 하나로 포인터 형식, ByRef
형식 또는 Void를 가진 제네릭 형식을 나타냅니다.
또는
typeName
은 형식 인수의 개수가 잘못된 제네릭 형식을 나타냅니다.
또는
typeName
은 제네릭 형식을 나타내며 그 형식 인수 중 하나가 해당 형식 매개 변수에 대한 제약 조건을 충족하지 않습니다.
typeName
는 잘못된 형식(예: 배열) TypedReference을 나타냅니다.
어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾았지만 로드할 수 없습니다.
참고: Windows 스토어 앱용 .NET 또는 이식 가능한 클래스 라이브러리에서 기본 클래스 예외 를 IOException대신 catch합니다.
어셈블리가 현재 로드된 런타임에 대해 유효하지 않습니다.
예제
다음 예제에서는 형식 System.Int32
을 검색하고 해당 형식 개체를 사용하여 의 System.Int32
속성을 표시 FullName 합니다.
using namespace System;
int main()
{
try {
// Get the type of a specified class.
Type^ myType1 = Type::GetType( "System.Int32" );
Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
}
catch ( TypeLoadException^ e ) {
Console::WriteLine("{0}: Unable to load type System.Int32",
e->GetType()->Name);
}
try {
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Type^ myType2 = Type::GetType( "NoneSuch", true );
Console::WriteLine( "The full name is {0}.", myType2->FullName );
}
catch ( TypeLoadException^ e ) {
Console::WriteLine("{0}: Unable to load type NoneSuch",
e->GetType()->Name);
}
}
// The example displays the following output:
// The full name is System.Int32.
//
// TypeLoadException: Unable to load type NoneSuch
using System;
class Example
{
public static void Main()
{
try {
// Get the type of a specified class.
Type myType1 = Type.GetType("System.Int32");
Console.WriteLine("The full name is {0}.\n", myType1.FullName);
}
catch (TypeLoadException e)
{
Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
}
try {
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Type myType2 = Type.GetType("NoneSuch", true);
Console.WriteLine("The full name is {0}.", myType2.FullName);
}
catch(TypeLoadException e) {
Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
}
}
}
// The example displays the following output:
// The full name is System.Int32.
//
// TypeLoadException: Unable to load type NoneSuch
open System
try
// Get the type of a specified class.
let myType1 = Type.GetType "System.Int32"
printfn $"The full name is {myType1.FullName}.\n"
with :? TypeLoadException as e ->
printfn $"{e.GetType().Name}: Unable to load type System.Int32"
try
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
let myType2 = Type.GetType("NoneSuch", true)
printfn $"The full name is {myType2.FullName}."
with :? TypeLoadException as e ->
printfn $"{e.GetType().Name}: Unable to load type NoneSuch"
// The example displays the following output:
// The full name is System.Int32.
//
// TypeLoadException: Unable to load type NoneSuch
Class Example
Public Shared Sub Main()
Try
' Get the type of the specified class.
Dim myType1 As Type = Type.GetType("System.Int32")
Console.WriteLine("The full name is {0}.", myType1.FullName)
Catch e As TypeLoadException
Console.WriteLine("{0}: Unable to load type System.Int32",
e.GetType().Name)
End Try
Console.WriteLine()
Try
' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Dim myType2 As Type = Type.GetType("NoneSuch", True)
Console.WriteLine("The full name is {0}.", myType2.FullName)
Catch e As TypeLoadException
Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
End Try
End Sub
End Class
' The example displays the following output:
' The full name is System.Int32.
'
' TypeLoadException: Unable to load type NoneSuch
설명
에서 가져올 수 있는 Type 어셈블리 정규화된 이름을 알고 있는 경우 메서드를 사용하여 GetType 다른 어셈블리의 AssemblyQualifiedName형식에 대한 개체를 가져올 수 있습니다.
GetType 는 에 지정된 어셈블리를 로드합니다 typeName
. 메서드를 사용하여 어셈블리를 Assembly.Load 로드한 다음 또는 Assembly.GetTypes 메서드를 Assembly.GetType 사용하여 개체를 가져올 Type 수도 있습니다. 형식이 컴파일 시간에 프로그램에 알려진 어셈블리에 있는 경우 C# 또는 GetType
Visual Basic의 연산자에서 를 사용하는 typeof
것이 더 효율적입니다.
참고
찾을 수 없으면 typeName
메서드에 대한 호출은 를 GetType(String) 반환합니다 null
. 예외를 throw하지 않습니다. 예외가 throw되는지 여부를 제어하려면 매개 변수가 있는 메서드의 GetType 오버로드를 throwOnError
호출합니다.
GetType 디스크에서 로드된 어셈블리에서만 작동합니다. 를 호출 GetType 하여 서비스를 사용하여 정의된 동적 어셈블리에 정의된 형식을 System.Reflection.Emit 조회하는 경우 일관되지 않은 동작이 발생할 수 있습니다. 동작은 동적 어셈블리가 영구적인지, 즉 열거형의 System.Reflection.Emit.AssemblyBuilderAccess 액세스 모드를 Save
사용하여 RunAndSave
만들어졌는지에 따라 달라집니다. 동적 어셈블리가 영구적이고 가 호출되기 전에 GetType
디스크에 기록된 경우 로더는 디스크에서 저장된 어셈블리를 찾아 해당 어셈블리를 로드하고 해당 어셈블리에서 형식을 검색합니다. 가 호출되었을 때 GetType
어셈블리가 디스크에 저장되지 않은 경우 메서드는 를 반환합니다 null
.
GetType
는 일시적인 동적 어셈블리를 이해하지 못합니다. 따라서 를 호출 GetType
하여 일시적인 동적 어셈블리에서 형식을 검색하면 가 반환됩니다 null
.
동적 모듈에서 를 사용 GetType
하려면 이벤트를 구독 AppDomain.AssemblyResolve 하고 저장하기 전에 를 호출 GetType
합니다. 그렇지 않으면 메모리에 어셈블리의 복사본 두 개를 가져옵니다.
다음 표에서는 형식을 반영할 때 메서드에서 Get
반환되는 기본 클래스의 멤버를 보여 줍니다.
멤버 형식 | 정적 | 비정적 |
---|---|---|
생성자 | 아니요 | 아니요 |
필드 | 아니요 | 예. 필드는 항상 이름별 및 서명으로 숨겨집니다. |
이벤트 | 해당 없음 | 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드와 동일하다는 것입니다. 리플렉션은 속성을 이름별 숨기기 및 서명으로 처리합니다. 아래 참고 2를 참조하세요. |
메서드 | 아니요 | 예. 메서드(가상 및 가상이 아닌 메서드)는 이름별 숨기기 또는 이름별 숨기기 및 서명일 수 있습니다. |
중첩 형식 | 아니요 | 아니요 |
속성 | 해당 없음 | 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드와 동일하다는 것입니다. 리플렉션은 속성을 이름별 숨기기 및 서명으로 처리합니다. 아래 참고 2를 참조하세요. |
이름별 숨기기 및 서명은 사용자 지정 한정자, 반환 형식, 매개 변수 형식, sentinels 및 관리되지 않는 호출 규칙을 포함하여 서명의 모든 부분을 고려합니다. 이진 비교입니다.
리플렉션의 경우 속성 및 이벤트는 이름별 숨기기 및 서명입니다. 기본 클래스에 get 및 set 접근자가 모두 있는 속성이 있지만 파생 클래스에 get 접근자만 있는 경우 파생 클래스 속성은 기본 클래스 속성을 숨기며 기본 클래스의 setter에 액세스할 수 없습니다.
사용자 지정 특성은 공용 형식 시스템의 일부가 아닙니다.
배열 또는 COM 형식은 사용 가능한 클래스의 테이블에 이미 로드되지 않은 한 검색되지 않습니다.
typeName
은 네임스페이스 또는 어셈블리 이름 사양을 포함하는 어셈블리 정규화된 이름으로 정규화된 형식 이름이 될 수 있습니다.
AssemblyQualifiedName을 참조하세요.
네임스페이스가 포함되지만 어셈블리 이름이 아닌 경우 typeName
이 메서드는 호출 개체의 어셈블리만 검색하고 해당 순서로 /System.Private.CoreLib.dll mscorlib.dll. typeName이 부분 또는 전체 어셈블리 이름으로 정규화된 경우 이 메서드는 지정된 어셈블리에서 검색합니다. 어셈블리에 강력한 이름이 있는 경우 전체 어셈블리 이름이 필요합니다.
속성은 AssemblyQualifiedName 중첩된 형식, 어셈블리 이름 및 제네릭 형식 인수를 포함하여 정규화된 형식 이름을 반환합니다. 공용 언어 런타임을 지원하는 모든 컴파일러에서는 중첩된 클래스의 간단한 이름을 내보내고, 리플렉션은 다음 규칙에 따라 쿼리할 때 잘못된 이름을 생성합니다.
참고
프로세서 아키텍처는 어셈블리 ID의 일부이며 어셈블리 이름 문자열의 일부로 지정할 수 있습니다. 예를 들어 "ProcessorArchitecture=msil"입니다. 그러나 호환성을 위해 속성에서 반환하는 AssemblyQualifiedName 문자열에는 포함되지 않습니다. 개체를 AssemblyName 만들고 메서드의 Load 적절한 오버로드에 전달하여 형식을 로드할 수도 있습니다. 그런 다음 메서드를 Assembly.GetType 사용하여 어셈블리에서 형식을 로드할 수 있습니다. AssemblyName.ProcessorArchitecture을 참조하세요.
구분 기호 | 의미 |
---|---|
백슬래시(\) | 이스케이프 문자입니다. |
백틱(') | 제네릭 형식의 이름 끝에 있는 형식 매개 변수 수를 나타내는 하나 이상의 숫자 앞에 섰습니다. |
대괄호([]) | 생성된 제네릭 형식에 대해 제네릭 형식 인수 목록을 묶습니다. 형식 인수 목록 내에서 어셈블리 정규화된 형식을 묶습니다. |
쉼표(,) | 어셈블리 이름 앞에 입니다. |
마침표(.) | 네임스페이스 식별자를 표시합니다. |
더하기 기호(+) | 중첩 클래스 앞에 섰습니다. |
예를 들어 클래스의 정규화된 이름은 다음과 같습니다.
TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly
네임스페이스가 TopNamespace.Sub+Namespace인 경우 문자열이 중첩 구분 기호로 해석되지 않도록 이스케이프 문자(\)가 있는 더하기 기호(+) 앞에 와야 합니다. 리플렉션은 다음과 같이 이 문자열을 내보낸다.
TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly
"++"는 "\+\+"가 되고 "\"는 "\\"가 됩니다.
이 정규화된 이름은 유지할 수 있으며 나중에 를 로드 Type하는 데 사용할 수 있습니다. 을 Type검색하고 로드하려면 형식 이름만 사용하거나 어셈블리 정규화된 형식 이름으로 를 사용합니다 GetType . GetType 형식 이름을 사용하면 호출자의 어셈블리에서 및 시스템 어셈블리에서 만 을 찾 Type 습니다. GetType 어셈블리 정규화된 형식 이름을 사용하면 어셈블리에서 을 Type 찾습니다.
형식 이름에는 형식이 참조 형식, 포인터 형식 또는 배열 형식인지 여부와 같이 형식에 대한 추가 정보를 나타내는 후행 문자가 포함될 수 있습니다. 이러한 후행 문자 없이 형식 이름을 검색하려면 를 사용합니다 t.GetElementType().ToString()
. 여기서 t
는 형식입니다.
공간은 어셈블리 이름을 제외한 모든 형식 이름 구성 요소에서 관련이 있습니다. 어셈블리 이름에서 ',' 구분 기호 앞의 공백은 관련이 있지만 ',' 구분 기호 뒤의 공백은 무시됩니다.
제네릭 형식의 이름은 백틱(')과 제네릭 형식 인수 수를 나타내는 숫자로 끝납니다. 이 이름 맹글링의 목적은 컴파일러가 이름이 같지만 형식 매개 변수 수가 다른 제네릭 형식을 동일한 범위에서 지원하도록 허용하는 것입니다. 예를 들어 리플렉션은 제네릭 메서드 Tuple(Of T)
와 Visual Basic 또는 Tuple<T0, T1>
Tuple<T>
Visual C#에서 망가진 이름과 Tuple`1
를 반환합니다.Tuple`2
Tuple(Of T0, T1)
제네릭 형식의 경우 형식 인수 목록은 대괄호로 묶고 형식 인수는 쉼표로 구분됩니다. 예를 들어 제네릭 Dictionary<TKey,TValue> 에는 두 가지 형식 매개 변수가 있습니다.
Dictionary<TKey,TValue> 형식 String 의 키가 있는 의 MyType
은 다음과 같이 표시될 수 있습니다.
System.Collections.Generic.Dictionary`2[System.String,MyType]
형식 인수 목록 내에서 어셈블리 정규화된 형식을 지정하려면 대괄호 안에 어셈블리 정규화된 형식을 묶습니다. 그렇지 않으면 어셈블리 정규화된 이름의 부분을 구분하는 쉼표는 추가 형식 인수를 구분하는 것으로 해석됩니다. 예를 들어 Dictionary<TKey,TValue> 형식String의 MyType
키가 있는 fromMyAssembly.dll 를 다음과 같이 지정할 수 있습니다.
Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
참고
어셈블리 정규화된 형식은 형식 매개 변수 목록 내에 표시되는 경우에만 대괄호로 묶을 수 있습니다. 형식 매개 변수 목록에서 정규화된 형식 및 정규화되지 않은 형식에 대한 어셈블리 검색 규칙은 정규화되고 정규화되지 않은 비일반 형식에 대한 규칙과 동일합니다.
Nullable 형식은 제네릭 형식의 특수한 사례입니다. 예를 들어 nullable Int32 은 "System.Nullable'1[System.Int32]" 문자열로 표시됩니다.
참고
C#, C++및 Visual Basic에서는 형식 연산자를 사용하여 nullable 형식을 가져올 수도 있습니다. 예를 들어 nullable Boolean 형식은 C#에서, Nullable<Boolean>::typeid
C++에서, Visual Basic에서 로 GetType(Nullable(Of Boolean))
반환 typeof(Nullable<bool>)
됩니다.
다음 표에서는 다양한 형식에 사용할 GetType
구문을 보여줍니다.
가져오기 | Windows Server Update Services와 함께 |
---|---|
nullable Int32 | Type.GetType("System.Nullable`1[System.Int32]") |
에 대한 관리되지 않는 포인터 MyType |
Type.GetType("MyType*") |
에 대한 포인터에 대한 관리되지 않는 포인터 MyType |
Type.GetType("MyType**") |
관리되는 포인터 또는 에 대한 참조 MyType |
Type.GetType("MyType&") . 포인터와 달리 참조는 한 수준으로 제한됩니다. |
부모 클래스 및 중첩 클래스 | Type.GetType("MyParentClass+MyNestedClass") |
하한이 0인 1차원 배열 | Type.GetType("MyType[]") |
알 수 없는 하한이 있는 1차원 배열 | Type.GetType("MyType[*]") |
n차원 배열 | 대괄호 안의 쉼표(,)는 총 n-1회입니다. 예를 들어 는 System.Object[,,] 3차원 배열을 Object 나타냅니다. |
1차원 배열의 배열 | Type.GetType("MyType[][]") |
알 수 없는 하한이 있는 사각형 2차원 배열 | Type.GetType("MyType[,]") |
하나의 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`1[MyType]") |
두 개의 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`2[MyType,AnotherType]") |
두 개의 어셈블리 정규화된 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]") |
어셈블리 정규화된 형식 인수가 있는 어셈블리 정규화된 제네릭 형식 | Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly") |
형식 인수가 두 개의 형식 인수가 있는 제네릭 형식인 제네릭 형식 | Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]") |
추가 정보
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- 정규화된 형식 이름 지정
적용 대상
GetType(String, Boolean)
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
대/소문자를 구분하여 검색하고 형식이 없으면 예외를 throw할지를 지정하여, 지정된 이름의 Type을 가져옵니다.
public:
static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType (string typeName, bool throwOnError);
public static Type? GetType (string typeName, bool throwOnError);
static member GetType : string * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean) As Type
매개 변수
- typeName
- String
가져올 형식에 대한 어셈블리로 한정된 이름입니다. AssemblyQualifiedName을 참조하세요. 형식이 현재 실행 중인 어셈블리 또는 mscorlib.dll/System.Private.CoreLib.dll 있는 경우 네임스페이스로 정규화된 형식 이름을 제공하기에 충분합니다.
- throwOnError
- Boolean
형식을 찾을 수 없는 경우 예외를 throw하려면 true
이고, false
을 반환하려면 null
입니다. 또한 false
를 지정하면 다른 예외 조건 중 일부(모두 아님)가 표시되지 않습니다. 예외 섹션을 참조하세요.
반환
지정된 이름의 형식입니다. 형식을 찾을 수 없는 경우에는 throwOnError
매개 변수가 null
을 반환할지 아니면 예외를 throw할지 지정합니다. 경우에 따라서는 throwOnError
값과 상관없이 예외가 throw됩니다. 예외 섹션을 참조하세요.
예외
typeName
이(가) null
인 경우
클래스 이니셜라이저가 호출되고 예외를 throw합니다.
throwOnError
가 true
이고 형식을 찾을 수 없습니다.
또는
throwOnError
가 true
이고 typeName
이 포함된 탭 등의 잘못된 문자를 포함합니다.
또는
throwOnError
가 true
이고 typeName
이 빈 문자열입니다.
또는
throwOnError
가 true
이고 typeName
이 잘못된 크기를 가진 배열 형식을 나타냅니다.
또는
typeName
이 TypedReference 배열을 나타냅니다.
throwOnError
가 true
이고 typeName
이 잘못된 구문을 포함합니다. 예를 들어 "MyType[,*,]"입니다.
또는
typeName
이 형식 인수 중 하나로 포인터 형식, ByRef
형식 또는 Void 를 가진 제네릭 형식을 나타냅니다.
또는
typeName
은 형식 인수의 개수가 잘못된 제네릭 형식을 나타냅니다.
또는
typeName
은 제네릭 형식을 나타내며 그 형식 인수 중 하나가 해당 형식 매개 변수에 대한 제약 조건을 충족하지 않습니다.
throwOnError
가 true
이고 어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾을 수 없습니다.
어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾았지만 로드할 수 없습니다.
참고: Windows 스토어 앱용 .NET 또는 이식 가능한 클래스 라이브러리에서 기본 클래스 예외 를 IOException대신 catch합니다.
어셈블리 또는 해당 종속성 중 하나가 현재 로드된 런타임에 유효하지 않습니다.
예제
다음 예제에서는 형식 System.Int32
을 검색하고 해당 형식 개체를 사용하여 의 System.Int32
속성을 표시 FullName 합니다. 형식 개체가 존재하지 않는 어셈블리를 참조하는 경우 이 예제에서는 예외를 throw합니다.
using namespace System;
int main()
{
try {
// Get the type of a specified class.
Type^ myType1 = Type::GetType( "System.Int32" );
Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
}
catch ( TypeLoadException^ e ) {
Console::WriteLine("{0}: Unable to load type System.Int32",
e->GetType()->Name);
}
try {
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Type^ myType2 = Type::GetType( "NoneSuch", true );
Console::WriteLine( "The full name is {0}.", myType2->FullName );
}
catch ( TypeLoadException^ e ) {
Console::WriteLine("{0}: Unable to load type NoneSuch",
e->GetType()->Name);
}
}
// The example displays the following output:
// The full name is System.Int32.
//
// TypeLoadException: Unable to load type NoneSuch
using System;
class Example
{
public static void Main()
{
try {
// Get the type of a specified class.
Type myType1 = Type.GetType("System.Int32");
Console.WriteLine("The full name is {0}.\n", myType1.FullName);
}
catch (TypeLoadException e)
{
Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
}
try {
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Type myType2 = Type.GetType("NoneSuch", true);
Console.WriteLine("The full name is {0}.", myType2.FullName);
}
catch(TypeLoadException e) {
Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
}
}
}
// The example displays the following output:
// The full name is System.Int32.
//
// TypeLoadException: Unable to load type NoneSuch
open System
try
// Get the type of a specified class.
let myType1 = Type.GetType "System.Int32"
printfn $"The full name is {myType1.FullName}.\n"
with :? TypeLoadException as e ->
printfn $"{e.GetType().Name}: Unable to load type System.Int32"
try
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
let myType2 = Type.GetType("NoneSuch", true)
printfn $"The full name is {myType2.FullName}."
with :? TypeLoadException as e ->
printfn $"{e.GetType().Name}: Unable to load type NoneSuch"
// The example displays the following output:
// The full name is System.Int32.
//
// TypeLoadException: Unable to load type NoneSuch
Class Example
Public Shared Sub Main()
Try
' Get the type of the specified class.
Dim myType1 As Type = Type.GetType("System.Int32")
Console.WriteLine("The full name is {0}.", myType1.FullName)
Catch e As TypeLoadException
Console.WriteLine("{0}: Unable to load type System.Int32",
e.GetType().Name)
End Try
Console.WriteLine()
Try
' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Dim myType2 As Type = Type.GetType("NoneSuch", True)
Console.WriteLine("The full name is {0}.", myType2.FullName)
Catch e As TypeLoadException
Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
End Try
End Sub
End Class
' The example displays the following output:
' The full name is System.Int32.
'
' TypeLoadException: Unable to load type NoneSuch
설명
에서 가져올 수 있는 Type 어셈블리 정규화된 이름을 알고 있는 경우 메서드를 사용하여 GetType 다른 어셈블리의 AssemblyQualifiedName형식에 대한 개체를 가져올 수 있습니다.
GetType 는 에 지정된 어셈블리를 로드합니다 typeName
. 메서드를 사용하여 어셈블리를 Assembly.Load 로드한 다음 또는 Assembly.GetTypes 메서드를 Assembly.GetType 사용하여 개체를 가져올 Type 수도 있습니다. 형식이 컴파일 시간에 프로그램에 알려진 어셈블리에 있는 경우 C# 또는 GetType
Visual Basic의 연산자에서 를 사용하는 typeof
것이 더 효율적입니다.
GetType
디스크에서 로드된 어셈블리에서만 작동합니다. 를 호출 GetType
하여 서비스를 사용하여 정의된 동적 어셈블리에 정의된 형식을 System.Reflection.Emit 조회하는 경우 일관되지 않은 동작이 발생할 수 있습니다. 동작은 동적 어셈블리가 영구적인지, 즉 열거형의 System.Reflection.Emit.AssemblyBuilderAccess 액세스 모드를 Save
사용하여 RunAndSave
만들어졌는지에 따라 달라집니다. 동적 어셈블리가 영구적이고 가 호출되기 전에 GetType
디스크에 기록된 경우 로더는 디스크에서 저장된 어셈블리를 찾아 해당 어셈블리를 로드하고 해당 어셈블리에서 형식을 검색합니다. 가 호출되었을 때 GetType
어셈블리가 디스크에 저장되지 않은 경우 메서드는 를 반환합니다 null
.
GetType
는 일시적인 동적 어셈블리를 이해하지 못합니다. 따라서 를 호출 GetType
하여 일시적인 동적 어셈블리에서 형식을 검색하면 가 반환됩니다 null
.
동적 모듈에서 를 사용 GetType
하려면 이벤트를 구독 AppDomain.AssemblyResolve 하고 저장하기 전에 를 호출 GetType
합니다. 그렇지 않으면 메모리에 어셈블리의 복사본 두 개를 가져옵니다.
매개 변수는 throwOnError
형식을 찾을 수 없을 때 발생하는 상황을 지정하고 예외 섹션에 설명된 대로 다른 특정 예외 조건도 표시하지 않습니다. 값에 관계없이 일부 예외가 throwOnError
throw됩니다. 예를 들어 형식을 찾았지만 로드 TypeLoadException 할 수 없는 경우 가 인 경우에도 throwOnError
이 throw됩니다 false
.
다음 표에서는 형식을 반영할 때 메서드에서 Get
반환되는 기본 클래스의 멤버를 보여 줍니다.
멤버 형식 | 정적 | 비정적 |
---|---|---|
생성자 | 아니요 | 아니요 |
필드 | 아니요 | 예. 필드는 항상 이름별 및 서명으로 숨겨집니다. |
이벤트 | 해당 없음 | 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드와 동일하다는 것입니다. 리플렉션은 속성을 이름별 숨기기 및 서명으로 처리합니다. 아래 참고 2를 참조하세요. |
메서드 | 아니요 | 예. 메서드(가상 및 가상이 아닌 메서드)는 이름별 숨기기 또는 이름별 숨기기 및 서명일 수 있습니다. |
중첩 형식 | 아니요 | 아니요 |
속성 | 해당 없음 | 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드와 동일하다는 것입니다. 리플렉션은 속성을 이름별 숨기기 및 서명으로 처리합니다. 아래 참고 2를 참조하세요. |
이름별 숨기기 및 서명은 사용자 지정 한정자, 반환 형식, 매개 변수 형식, sentinels 및 관리되지 않는 호출 규칙을 포함하여 서명의 모든 부분을 고려합니다. 이진 비교입니다.
리플렉션의 경우 속성 및 이벤트는 이름별 숨기기 및 서명입니다. 기본 클래스에 get 및 set 접근자가 모두 있는 속성이 있지만 파생 클래스에 get 접근자만 있는 경우 파생 클래스 속성은 기본 클래스 속성을 숨기며 기본 클래스의 setter에 액세스할 수 없습니다.
사용자 지정 특성은 공용 형식 시스템의 일부가 아닙니다.
배열 또는 COM 형식은 사용 가능한 클래스의 테이블에 이미 로드되지 않은 한 검색되지 않습니다.
typeName
은 네임스페이스 또는 어셈블리 이름 사양을 포함하는 어셈블리 정규화된 이름으로 정규화된 형식 이름이 될 수 있습니다.
AssemblyQualifiedName을 참조하세요.
네임스페이스가 포함되지만 어셈블리 이름이 아닌 경우 typeName
이 메서드는 호출 개체의 어셈블리만 검색하고 해당 순서로 /System.Private.CoreLib.dll mscorlib.dll. typeName이 부분 또는 전체 어셈블리 이름으로 정규화된 경우 이 메서드는 지정된 어셈블리에서 검색합니다. 어셈블리에 강력한 이름이 있는 경우 전체 어셈블리 이름이 필요합니다.
속성은 AssemblyQualifiedName 중첩된 형식, 어셈블리 이름 및 제네릭 인수를 포함하여 정규화된 형식 이름을 반환합니다. 공용 언어 런타임을 지원하는 모든 컴파일러에서는 중첩된 클래스의 간단한 이름을 내보내고, 리플렉션은 다음 규칙에 따라 쿼리할 때 잘못된 이름을 생성합니다.
참고
프로세서 아키텍처는 어셈블리 ID의 일부이며 어셈블리 이름 문자열의 일부로 지정할 수 있습니다. 예를 들어 "ProcessorArchitecture=msil"입니다. 그러나 호환성을 위해 속성에서 반환하는 AssemblyQualifiedName 문자열에는 포함되지 않습니다. 개체를 AssemblyName 만들고 메서드의 Load 적절한 오버로드에 전달하여 형식을 로드할 수도 있습니다. 그런 다음 메서드를 Assembly.GetType 사용하여 어셈블리에서 형식을 로드할 수 있습니다. AssemblyName.ProcessorArchitecture을 참조하세요.
구분 기호 | 의미 |
---|---|
백슬래시(\) | 이스케이프 문자입니다. |
백틱(') | 제네릭 형식의 이름 끝에 있는 형식 매개 변수 수를 나타내는 하나 이상의 숫자 앞에 섰습니다. |
대괄호([]) | 생성된 제네릭 형식에 대해 제네릭 형식 인수 목록을 묶습니다. 형식 인수 목록 내에서 어셈블리 정규화된 형식을 묶습니다. |
쉼표(,) | 어셈블리 이름 앞에 입니다. |
마침표(.) | 네임스페이스 식별자를 표시합니다. |
더하기 기호(+) | 중첩 클래스 앞에 섰습니다. |
예를 들어 클래스의 정규화된 이름은 다음과 같습니다.
TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly
네임스페이스가 TopNamespace.Sub+Namespace인 경우 문자열이 중첩 구분 기호로 해석되지 않도록 이스케이프 문자(\)가 있는 더하기 기호(+) 앞에 와야 합니다. 리플렉션은 다음과 같이 이 문자열을 내보낸다.
TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly
"++"는 "\+\+"가 되고 "\"는 "\\"가 됩니다.
이 정규화된 이름은 유지할 수 있으며 나중에 를 로드 Type하는 데 사용할 수 있습니다. 을 Type검색하고 로드하려면 형식 이름만 사용하거나 어셈블리 정규화된 형식 이름으로 를 사용합니다 GetType . GetType 형식 이름을 사용하면 호출자의 어셈블리에서 및 시스템 어셈블리에서 만 을 찾 Type 습니다. GetType 어셈블리 정규화된 형식 이름을 사용하면 어셈블리에서 을 Type 찾습니다.
형식 이름에는 형식이 참조 형식, 포인터 형식 또는 배열 형식인지 여부와 같이 형식에 대한 추가 정보를 나타내는 후행 문자가 포함될 수 있습니다. 이러한 후행 문자 없이 형식 이름을 검색하려면 를 사용합니다 t.GetElementType().ToString()
. 여기서 t
는 형식입니다.
공간은 어셈블리 이름을 제외한 모든 형식 이름 구성 요소에서 관련이 있습니다. 어셈블리 이름에서 ',' 구분 기호 앞의 공백은 관련이 있지만 ',' 구분 기호 뒤의 공백은 무시됩니다.
제네릭 형식의 이름은 백틱(')과 제네릭 형식 인수 수를 나타내는 숫자로 끝납니다. 이 이름 맹글링의 목적은 컴파일러가 이름이 같지만 형식 매개 변수 수가 다른 제네릭 형식을 동일한 범위에서 지원하도록 허용하는 것입니다. 예를 들어 리플렉션은 제네릭 메서드 Tuple(Of T)
와 Visual Basic 또는 Tuple<T0, T1>
Tuple<T>
Visual C#에서 망가진 이름과 Tuple`1
를 반환합니다.Tuple`2
Tuple(Of T0, T1)
제네릭 형식의 경우 형식 인수 목록은 대괄호로 묶고 형식 인수는 쉼표로 구분됩니다. 예를 들어 제네릭 Dictionary<TKey,TValue> 에는 두 가지 형식 매개 변수가 있습니다.
Dictionary<TKey,TValue> 형식 String 의 키가 있는 의 MyType
은 다음과 같이 표시될 수 있습니다.
System.Collections.Generic.Dictionary`2[System.String,MyType]
형식 인수 목록 내에서 어셈블리 정규화된 형식을 지정하려면 대괄호 안에 어셈블리 정규화된 형식을 묶습니다. 그렇지 않으면 어셈블리 정규화된 이름의 부분을 구분하는 쉼표는 추가 형식 인수를 구분하는 것으로 해석됩니다. 예를 들어 Dictionary<TKey,TValue> 형식의 MyType
키가 있는 MyAssembly.dll 의 String은 다음과 같이 지정될 수 있습니다.
Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
참고
어셈블리 정규화된 형식은 형식 매개 변수 목록 내에 표시되는 경우에만 대괄호로 묶을 수 있습니다. 형식 매개 변수 목록에서 정규화된 형식 및 정규화되지 않은 형식에 대한 어셈블리 검색 규칙은 정규화되고 정규화되지 않은 비일반 형식에 대한 규칙과 동일합니다.
Nullable 형식은 제네릭 형식의 특수한 사례입니다. 예를 들어 nullable Int32 은 "System.Nullable'1[System.Int32]" 문자열로 표시됩니다.
참고
C#, C++및 Visual Basic에서는 형식 연산자를 사용하여 nullable 형식을 가져올 수도 있습니다. 예를 들어 nullable Boolean 형식은 C#에서, Nullable<Boolean>::typeid
C++에서, Visual Basic에서 로 GetType(Nullable(Of Boolean))
반환 typeof(Nullable<bool>)
됩니다.
다음 표에서는 다양한 형식에 사용할 GetType
구문을 보여줍니다.
가져오기 | Windows Server Update Services와 함께 |
---|---|
nullable Int32 | Type.GetType("System.Nullable`1[System.Int32]") |
에 대한 관리되지 않는 포인터 MyType |
Type.GetType("MyType*") |
에 대한 포인터에 대한 관리되지 않는 포인터 MyType |
Type.GetType("MyType**") |
관리되는 포인터 또는 에 대한 참조 MyType |
Type.GetType("MyType&") . 포인터와 달리 참조는 한 수준으로 제한됩니다. |
부모 클래스 및 중첩 클래스 | Type.GetType("MyParentClass+MyNestedClass") |
하한이 0인 1차원 배열 | Type.GetType("MyArray[]") |
알 수 없는 하한이 있는 1차원 배열 | Type.GetType("MyArray[*]") |
n차원 배열 | 대괄호 안의 쉼표(,)는 총 n-1회입니다. 예를 들어 는 System.Object[,,] 3차원 배열을 Object 나타냅니다. |
2차원 배열의 배열 | Type.GetType("MyArray[][]") |
알 수 없는 하한이 있는 사각형 2차원 배열 | Type.GetType("MyArray[,]") |
하나의 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`1[MyType]") |
두 개의 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`2[MyType,AnotherType]") |
두 개의 어셈블리 정규화된 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]") |
어셈블리 정규화된 형식 인수가 있는 어셈블리 정규화된 제네릭 형식 | Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly") |
형식 인수가 두 개의 형식 인수가 있는 제네릭 형식인 제네릭 형식 | Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]") |
추가 정보
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- 정규화된 형식 이름 지정
적용 대상
GetType(String, Boolean, Boolean)
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
대/소문자를 구분하여 검색할지 여부와 형식이 없으면 예외를 throw할지 여부를 지정하여, 지정된 이름의 Type을 가져옵니다.
public:
static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, bool throwOnError, bool ignoreCase);
public static Type? GetType (string typeName, bool throwOnError, bool ignoreCase);
static member GetType : string * bool * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean, ignoreCase As Boolean) As Type
매개 변수
- typeName
- String
가져올 형식에 대한 어셈블리로 한정된 이름입니다. AssemblyQualifiedName을 참조하세요. 형식이 현재 실행 중인 어셈블리에 있거나 /System.Private.CoreLib.dll mscorlib.dll경우 네임스페이스로 정규화된 형식 이름을 제공하는 것으로 충분합니다.
- throwOnError
- Boolean
형식을 찾을 수 없는 경우 예외를 throw하려면 true
이고, false
을 반환하려면 null
입니다. 또한 false
를 지정하면 다른 예외 조건 중 일부(모두 아님)가 표시되지 않습니다. 예외 섹션을 참조하세요.
- ignoreCase
- Boolean
true
에 대해 대/소문자를 구분하지 않는 검색을 수행하려는 경우 typeName
이고, false
에 대해 대/소문자를 구분하는 검색을 수행하려는 경우 typeName
입니다.
반환
지정된 이름의 형식입니다. 형식을 찾을 수 없는 경우에는 throwOnError
매개 변수가 null
을 반환할지 아니면 예외를 throw할지 지정합니다. 경우에 따라서는 throwOnError
값과 상관없이 예외가 throw됩니다. 예외 섹션을 참조하세요.
예외
typeName
이(가) null
인 경우
클래스 이니셜라이저가 호출되고 예외를 throw합니다.
throwOnError
가 true
이고 형식을 찾을 수 없습니다.
또는
throwOnError
가 true
이고 typeName
이 포함된 탭 등의 잘못된 문자를 포함합니다.
또는
throwOnError
가 true
이고 typeName
이 빈 문자열입니다.
또는
throwOnError
가 true
이고 typeName
이 잘못된 크기를 가진 배열 형식을 나타냅니다.
또는
typeName
이 TypedReference 배열을 나타냅니다.
throwOnError
가 true
이고 typeName
이 잘못된 구문을 포함합니다. 예를 들어 "MyType[,*,]"입니다.
또는
typeName
이 형식 인수 중 하나로 포인터 형식, ByRef
형식 또는 Void 를 가진 제네릭 형식을 나타냅니다.
또는
typeName
은 형식 인수의 개수가 잘못된 제네릭 형식을 나타냅니다.
또는
typeName
은 제네릭 형식을 나타내며 그 형식 인수 중 하나가 해당 형식 매개 변수에 대한 제약 조건을 충족하지 않습니다.
throwOnError
가 true
이고 어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾을 수 없습니다.
어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾았지만 로드할 수 없습니다.
어셈블리가 현재 로드된 런타임에 유효하지 않습니다.
설명
메서드를 GetType 사용하여 에서 가져올 수 있는 어셈블리 정규화된 이름을 알고 있는 경우 다른 어셈블리의 AssemblyQualifiedName형식에 대한 개체를 가져올 Type 수 있습니다.
GetType 는 에 typeName
지정된 어셈블리를 로드합니다. 메서드를 사용하여 어셈블리를 로드한 Assembly.Load 다음 또는 Assembly.GetTypes 메서드를 Assembly.GetType 사용하여 개체를 가져올 Type 수도 있습니다. 형식이 컴파일 시간에 프로그램에 알려진 어셈블리에 있는 경우 C# 또는 GetType
Visual Basic의 연산자에서 를 사용하는 typeof
것이 더 효율적입니다.
GetType
는 디스크에서 로드된 어셈블리에서만 작동합니다. 를 호출 GetType
하여 서비스를 사용하여 정의된 동적 어셈블리에 정의된 형식을 System.Reflection.Emit 조회하는 경우 일관되지 않은 동작이 발생할 수 있습니다. 동작은 동적 어셈블리가 영구적인지, 즉 열거형의 System.Reflection.Emit.AssemblyBuilderAccess 또는 Save
액세스 모드를 사용하여 RunAndSave
만들어졌는지에 따라 달라집니다. 동적 어셈블리가 영구적이고 가 호출되기 전에 GetType
디스크에 기록된 경우 로더는 디스크에서 저장된 어셈블리를 찾아 해당 어셈블리를 로드하고 해당 어셈블리에서 형식을 검색합니다. 가 호출되었을 때 GetType
어셈블리가 디스크에 저장되지 않은 경우 메서드는 를 반환합니다 null
.
GetType
는 일시적인 동적 어셈블리를 이해하지 못합니다. 따라서 임시 동적 어셈블리에서 형식을 검색하기 위해 를 호출 GetType
하면 가 반환됩니다 null
.
동적 모듈에서 를 사용 GetType
하려면 저장하기 전에 이벤트를 구독 AppDomain.AssemblyResolve 하고 를 호출 GetType
합니다. 그렇지 않으면 메모리에 어셈블리의 복사본 두 개를 가져옵니다.
매개 변수는 throwOnError
형식을 찾을 수 없을 때 발생하는 상황을 지정하고 예외 섹션에 설명된 대로 다른 특정 예외 조건도 표시하지 않습니다. 값에 관계없이 일부 예외가 throwOnError
throw됩니다. 예를 들어 형식을 찾았지만 로드 TypeLoadException 할 수 없는 경우 가 인 경우에도 throwOnError
false
이 throw됩니다.
다음 표에서는 형식을 반영할 때 메서드에서 반환되는 기본 클래스의 Get
멤버를 보여 줍니다.
멤버 형식 | 정적 | 비정적 |
---|---|---|
생성자 | 아니요 | 아니요 |
필드 | 아니요 | 예. 필드는 항상 이름별 및 서명으로 숨깁니다. |
이벤트 | 해당 없음 | 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드의 상속과 동일하다는 것입니다. 리플렉션은 속성을 hide-by-name-and-signature으로 처리합니다. 아래의 참고 2를 참조하세요. |
메서드 | 아니요 | 예. 메서드(가상 및 가상이 아닌 메서드)는 이름별 숨기기 또는 이름별 숨기기 및 서명일 수 있습니다. |
중첩 형식 | 아니요 | 아니요 |
속성 | 해당 없음 | 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드의 상속과 동일하다는 것입니다. 리플렉션은 속성을 hide-by-name-and-signature으로 처리합니다. 아래의 참고 2를 참조하세요. |
이름별 숨기기 및 서명은 사용자 지정 한정자, 반환 형식, 매개 변수 형식, sentinels 및 관리되지 않는 호출 규칙을 포함하여 서명의 모든 부분을 고려합니다. 이진 비교입니다.
리플렉션의 경우 속성 및 이벤트는 이름별 숨기기 및 서명입니다. 기본 클래스에 get 및 set 접근자가 둘 다 있는 속성이 있지만 파생 클래스에 get 접근자만 있는 경우 파생 클래스 속성은 기본 클래스 속성을 숨기며 기본 클래스의 setter에 액세스할 수 없습니다.
사용자 지정 특성은 공통 형식 시스템의 일부가 아닙니다.
배열 또는 COM 형식은 사용 가능한 클래스의 테이블에 이미 로드되지 않은 경우 검색되지 않습니다.
typeName
는 네임스페이스로 정규화된 형식 이름 또는 어셈블리 이름 사양을 포함하는 어셈블리 정규화된 이름일 수 있습니다.
AssemblyQualifiedName을 참조하세요.
네임스페이스를 포함하지만 어셈블리 이름은 포함하지 않는 경우 typeName
이 메서드는 호출하는 개체의 어셈블리만 검색하고 /System.Private.CoreLib.dll 순서대로 mscorlib.dll. typeName이 부분 또는 전체 어셈블리 이름으로 정규화된 경우 이 메서드는 지정된 어셈블리에서 검색합니다. 어셈블리에 강력한 이름이 있는 경우 전체 어셈블리 이름이 필요합니다.
속성은 AssemblyQualifiedName 중첩된 형식, 어셈블리 이름 및 형식 인수를 포함하여 정규화된 형식 이름을 반환합니다. 공용 언어 런타임을 지원하는 모든 컴파일러에서는 중첩 클래스의 간단한 이름을 내보내고, 리플렉션은 다음 규칙에 따라 쿼리할 때 잘못된 이름을 생성합니다.
참고
프로세서 아키텍처는 어셈블리 ID의 일부이며 어셈블리 이름 문자열의 일부로 지정할 수 있습니다. 예를 들어 "ProcessorArchitecture=msil"입니다. 그러나 호환성을 위해 속성에서 반환된 AssemblyQualifiedName 문자열에는 포함되지 않습니다. 개체를 AssemblyName 만들고 메서드의 Load 적절한 오버로드에 전달하여 형식을 로드할 수도 있습니다. 그런 다음 메서드를 Assembly.GetType 사용하여 어셈블리에서 형식을 로드할 수 있습니다. AssemblyName.ProcessorArchitecture을 참조하세요.
구분 기호 | 의미 |
---|---|
백슬래시(\) | 이스케이프 문자입니다. |
백틱(') | 제네릭 형식 이름 끝에 있는 형식 매개 변수 수를 나타내는 하나 이상의 숫자 앞에 섰습니다. |
대괄호([]) | 생성된 제네릭 형식에 대한 제네릭 형식 인수 목록을 묶습니다. 형식 인수 목록 내에서 어셈블리 정규화된 형식을 묶습니다. |
쉼표(,) | 어셈블리 이름 앞에 섰습니다. |
마침표(.) | 네임스페이스 식별자를 표시합니다. |
더하기 기호(+) | 중첩 클래스 앞에 섰습니다. |
예를 들어 클래스의 정규화된 이름은 다음과 같을 수 있습니다.
TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly
네임스페이스가 TopNamespace.Sub+Namespace인 경우 문자열이 중첩 구분 기호로 해석되지 않도록 이스케이프 문자(\)가 있는 더하기 기호(+) 앞에 와야 합니다. 리플렉션은 다음과 같이 이 문자열을 내보낸다.
TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly
"++"는 "\+\+"가 되고 "\"는 "\\"가 됩니다.
이 정규화된 이름은 유지할 수 있으며 나중에 를 로드 Type하는 데 사용할 수 있습니다. 를 검색하고 로드 Type하려면 형식 이름만 사용하거나 어셈블리 정규화된 형식 이름과 함께 를 사용합니다 GetType . GetType 형식 이름을 사용하면 호출자의 어셈블리에서 를 찾은 다음 시스템 어셈블리에서 만 찾 Type 습니다. GetType 어셈블리 정규화된 형식 이름을 사용하여 모든 어셈블리에서 을 Type 찾습니다.
형식 이름에는 형식이 참조 형식, 포인터 형식 또는 배열 형식인지 여부와 같이 형식에 대한 추가 정보를 나타내는 후행 문자가 포함될 수 있습니다. 이러한 후행 문자 없이 형식 이름을 검색하려면 를 사용합니다 t.GetElementType().ToString()
. 여기서 t
는 형식입니다.
공간은 어셈블리 이름을 제외한 모든 형식 이름 구성 요소에서 관련이 있습니다. 어셈블리 이름에서 ',' 구분 기호 앞의 공백은 관련이 있지만 ',' 구분 기호 뒤의 공백은 무시됩니다.
제네릭 형식의 이름은 백틱(') 뒤에 제네릭 형식 인수의 수를 나타내는 숫자로 끝납니다. 이 이름 맨글링의 목적은 컴파일러가 이름이 같지만 형식 매개 변수 수가 다른 제네릭 형식을 동일한 범위에서 지원하도록 허용하는 것입니다. 예를 들어 리플렉션은 제네릭 메서드 Tuple(Of T)
와 Visual Basic 또는 Tuple<T0, T1>
Tuple<T>
Visual C#의 잘못된 이름과 Tuple`1
를 반환합니다.Tuple`2
Tuple(Of T0, T1)
제네릭 형식의 경우 형식 인수 목록은 대괄호로 묶고 형식 인수는 쉼표로 구분됩니다. 예를 들어 제네릭 Dictionary<TKey,TValue> 에는 두 가지 형식 매개 변수가 있습니다.
Dictionary<TKey,TValue> 형식 String 의 키가 있는 의 MyType
은 다음과 같이 표시될 수 있습니다.
System.Collections.Generic.Dictionary`2[System.String,MyType]
형식 인수 목록 내에서 어셈블리 정규화된 형식을 지정하려면 대괄호 안에 어셈블리 정규화된 형식을 묶습니다. 그렇지 않으면 어셈블리 정규화된 이름의 부분을 구분하는 쉼표가 추가 형식 인수를 구분하는 것으로 해석됩니다. 예를 들어 Dictionary<TKey,TValue> 형식String의 MyType
키가 있는 의 MyAssembly.dll 다음과 같이 지정할 수 있습니다.
Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
참고
형식 매개 변수 목록 내에 표시되는 경우에만 어셈블리 정규화된 형식을 대괄호로 묶을 수 있습니다. 형식 매개 변수 목록에서 정규화된 형식 및 정규화되지 않은 형식에 대한 어셈블리 검색 규칙은 정규화되고 정규화되지 않은 비일반 형식에 대한 규칙과 동일합니다.
Nullable 형식은 제네릭 형식의 특수한 경우입니다. 예를 들어 nullable Int32 은 "System.Nullable'1[System.Int32]" 문자열로 표시됩니다.
참고
C#, C++및 Visual Basic에서는 형식 연산자를 사용하여 nullable 형식을 가져올 수도 있습니다. 예를 들어 nullable Boolean 형식은 C#, C++, Nullable<Boolean>::typeid
Visual Basic에서 에서 GetType(Nullable(Of Boolean))
반환 typeof(Nullable<bool>)
됩니다.
다음 표에서는 다양한 형식에 사용할 GetType
구문을 보여줍니다.
가져오기 | Windows Server Update Services와 함께 |
---|---|
nullable Int32 | Type.GetType("System.Nullable`1[System.Int32]") |
에 대한 관리되지 않는 포인터 MyType |
Type.GetType("MyType*") |
에 대한 포인터에 대한 관리되지 않는 포인터 MyType |
Type.GetType("MyType**") |
에 대한 관리되는 포인터 또는 참조 MyType |
Type.GetType("MyType&") . 포인터와 달리 참조는 한 수준으로 제한됩니다. |
부모 클래스 및 중첩 클래스 | Type.GetType("MyParentClass+MyNestedClass") |
하한이 0인 1차원 배열 | Type.GetType("MyArray[]") |
알 수 없는 하한이 있는 1차원 배열 | Type.GetType("MyArray[*]") |
n차원 배열 | 대괄호 안의 쉼표(,)는 총 n-1번입니다. 예를 들어 는 System.Object[,,] 3차원 배열을 Object 나타냅니다. |
2차원 배열의 배열 | Type.GetType("MyArray[][]") |
알 수 없는 하한이 있는 사각형 2차원 배열 | Type.GetType("MyArray[,]") |
하나의 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`1[MyType]") |
두 개의 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`2[MyType,AnotherType]") |
두 개의 어셈블리 정규화된 형식 인수가 있는 제네릭 형식 | Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]") |
어셈블리 정규화된 형식 인수가 있는 어셈블리 정규화된 제네릭 형식 | Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly") |
형식 인수가 두 개의 형식 인수가 있는 제네릭 형식인 제네릭 형식 | Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]") |
추가 정보
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- 정규화된 형식 이름 지정
적용 대상
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
어셈블리 및 형식을 확인할 수 있는 사용자 지정 메서드를 선택적으로 제공하여, 지정된 이름의 형식을 가져옵니다.
public:
static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver);
public static Type? GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type)) As Type
매개 변수
- typeName
- String
가져올 형식의 이름입니다.
typeResolver
매개 변수가 제공되는 경우 형식 이름은 typeResolver
에서 확인 가능한 임의의 문자열일 수 있습니다. 매개 변수가 assemblyResolver
제공되거나 표준 형식 확인이 사용되는 typeName
경우 형식이 현재 실행 중인 어셈블리 또는 mscorlib.dll/System.Private.CoreLib.dll 있지 않으면 어셈블리 정규화된 이름(참조 AssemblyQualifiedName)이어야 합니다. 이 경우 네임스페이스에서 정규화된 형식 이름을 제공하기에 충분합니다.
- assemblyResolver
- Func<AssemblyName,Assembly>
typeName
에 지정된 어셈블리를 찾고 반환하는 메서드입니다. 어셈블리 이름이 assemblyResolver
에 AssemblyName 개체로 전달됩니다.
typeName
에 어셈블리의 이름이 포함되어 있지 않으면 assemblyResolver
가 호출되지 않습니다.
assemblyResolver
가 제공되지 않으면 표준 어셈블리 확인이 수행됩니다.
주의: 알 수 없거나 신뢰할 수 없는 호출자의 메서드를 전달하지 마세요. 그렇게 하면 권한이 상승되어 악성 코드가 실행될 수 있습니다. 제공하는 메서드 또는 친숙한 메서드만 사용합니다.
typeName
또는 표준 어셈블리 확인에서 반환된 어셈블리에서 assemblyResolver
에 지정된 형식을 찾고 반환하는 메서드입니다. 어셈블리가 제공되지 않는 경우 typeResolver
메서드에서 어셈블리를 제공할 수 있습니다. 이 메서드는 또한 대/소문자를 구분하지 않는 검색을 수행할지를 지정하는 매개 변수를 사용하며, 해당 매개 변수에 false
가 전달됩니다.
주의: 알 수 없거나 신뢰할 수 없는 호출자의 메서드를 전달하지 마세요.
반환
지정된 이름을 가진 형식이거나, 형식이 없으면 null
입니다.
예외
typeName
이(가) null
인 경우
클래스 이니셜라이저가 호출되고 예외를 throw합니다.
typeName
이 형식 이름 및 어셈블리 이름으로 구문 분석되면 오류가 발생합니다(예: 단순 형식 이름에 이스케이프되지 않은 특수 문자가 포함된 경우).
또는
typeName
이 형식 인수 중 하나로 포인터 형식, ByRef
형식 또는 Void 를 가진 제네릭 형식을 나타냅니다.
또는
typeName
은 형식 인수의 개수가 잘못된 제네릭 형식을 나타냅니다.
또는
typeName
은 제네릭 형식을 나타내며 그 형식 인수 중 하나가 해당 형식 매개 변수에 대한 제약 조건을 충족하지 않습니다.
typeName
는 잘못된 형식(예: 의 TypedReference배열)을 나타냅니다.
어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾았지만 로드할 수 없습니다.
또는
typeName
이 잘못된 어셈블리 이름을 포함합니다.
또는
typeName
이 형식 이름이 없는 올바른 어셈블리 이름입니다.
어셈블리 또는 해당 종속성 중 하나가 현재 로드된 런타임에 대해 유효하지 않습니다.
설명
이 메서드에 대한 사용 시나리오 및 및 typeResolver
매개 변수에 assemblyResolver
대한 세부 정보는 메서드 오버로드에서 GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) 찾을 수 있습니다.
참고
찾을 수 없는 경우 typeName
메서드에 대한 호출은 를 GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) 반환합니다 null
. 예외를 throw하지 않습니다. 예외가 throw되는지 여부를 제어하려면 매개 변수가 있는 메서드의 GetType 오버로드를 throwOnError
호출합니다.
이 메서드 오버로드를 호출하는 것은 메서드 오버로드를 GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) 호출하고 및 ignoreCase
매개 변수를 throwOnError
지정하는 false
것과 동일합니다.
적용 대상
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
- Source:
- Type.CoreCLR.cs
형식을 찾을 수 없는 경우 예외를 throw할지를 지정하고 어셈블리 및 형식을 확인할 수 있는 사용자 지정 메서드를 선택적으로 제공하여, 지정된 이름의 형식을 가져옵니다.
public:
static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError);
public static Type? GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver, bool throwOnError);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean) As Type
매개 변수
- typeName
- String
가져올 형식의 이름입니다.
typeResolver
매개 변수가 제공되는 경우 형식 이름은 typeResolver
에서 확인 가능한 임의의 문자열일 수 있습니다. 매개 변수가 assemblyResolver
제공되거나 표준 형식 확인이 사용되는 typeName
경우 형식이 현재 실행 중인 어셈블리 또는 mscorlib.dll/System.Private.CoreLib.dll 있지 않으면 어셈블리 정규화된 이름(참조 AssemblyQualifiedName)이어야 합니다. 이 경우 네임스페이스에서 정규화된 형식 이름을 제공하기에 충분합니다.
- assemblyResolver
- Func<AssemblyName,Assembly>
typeName
에 지정된 어셈블리를 찾고 반환하는 메서드입니다. 어셈블리 이름이 assemblyResolver
에 AssemblyName 개체로 전달됩니다.
typeName
에 어셈블리의 이름이 포함되어 있지 않으면 assemblyResolver
가 호출되지 않습니다.
assemblyResolver
가 제공되지 않으면 표준 어셈블리 확인이 수행됩니다.
주의: 알 수 없거나 신뢰할 수 없는 호출자의 메서드를 전달하지 마세요. 그렇게 하면 권한이 상승되어 악성 코드가 실행될 수 있습니다. 제공하는 메서드 또는 친숙한 메서드만 사용합니다.
typeName
또는 표준 어셈블리 확인에서 반환된 어셈블리에서 assemblyResolver
에 지정된 형식을 찾고 반환하는 메서드입니다. 어셈블리가 제공되지 않는 경우 이 메서드에서 어셈블리를 제공할 수 있습니다. 이 메서드는 또한 대/소문자를 구분하지 않는 검색을 수행할지를 지정하는 매개 변수를 사용하며, 해당 매개 변수에 false
가 전달됩니다.
주의: 알 수 없거나 신뢰할 수 없는 호출자의 메서드를 전달하지 마세요.
- throwOnError
- Boolean
형식을 찾을 수 없는 경우 예외를 throw하려면 true
이고, false
을 반환하려면 null
입니다. 또한 false
를 지정하면 다른 예외 조건 중 일부(모두 아님)가 표시되지 않습니다. 예외 섹션을 참조하세요.
반환
지정된 이름의 형식입니다. 형식을 찾을 수 없는 경우에는 throwOnError
매개 변수가 null
을 반환할지 아니면 예외를 throw할지 지정합니다. 경우에 따라서는 throwOnError
값과 상관없이 예외가 throw됩니다. 예외 섹션을 참조하세요.
예외
typeName
이(가) null
인 경우
클래스 이니셜라이저가 호출되고 예외를 throw합니다.
throwOnError
가 true
이고 형식을 찾을 수 없습니다.
또는
throwOnError
가 true
이고 typeName
이 포함된 탭 등의 잘못된 문자를 포함합니다.
또는
throwOnError
가 true
이고 typeName
이 빈 문자열입니다.
또는
throwOnError
가 true
이고 typeName
이 잘못된 크기를 가진 배열 형식을 나타냅니다.
또는
typeName
이 TypedReference 배열을 나타냅니다.
typeName
이 형식 이름 및 어셈블리 이름으로 구문 분석되면 오류가 발생합니다(예: 단순 형식 이름에 이스케이프되지 않은 특수 문자가 포함된 경우).
또는
throwOnError
가 true
이고 typeName
이 잘못된 구문(예: "MyType[,*,]")을 포함합니다.
또는
typeName
이 형식 인수 중 하나로 포인터 형식, ByRef
형식 또는 Void 를 가진 제네릭 형식을 나타냅니다.
또는
typeName
은 형식 인수의 개수가 잘못된 제네릭 형식을 나타냅니다.
또는
typeName
은 제네릭 형식을 나타내며 그 형식 인수 중 하나가 해당 형식 매개 변수에 대한 제약 조건을 충족하지 않습니다.
throwOnError
가 true
이고 어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾을 수 없습니다.
또는
typeName
이 잘못된 어셈블리 이름을 포함합니다.
또는
typeName
이 형식 이름이 없는 올바른 어셈블리 이름입니다.
어셈블리 또는 여기에 종속되어 있는 어셈블리 중 하나를 찾았지만 로드할 수 없습니다.
어셈블리 또는 해당 종속성 중 하나가 현재 로드된 런타임에 대해 유효하지 않습니다.
설명
이 메서드에 대한 사용 시나리오 및 및 typeResolver
매개 변수에 assemblyResolver
대한 세부 정보는 메서드 오버로드에서 GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) 찾을 수 있습니다.
이 메서드 오버로드를 호출하는 것은 메서드 오버로드를 GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) 호출하고 매개 변수를 ignoreCase
지정하는 false
것과 동일합니다.
적용 대상
.NET