Type.GetType メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定された型を表す Type オブジェクトを取得します。
オーバーロード
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) |
大文字と小文字を区別せずに検索を実行するかどうか、および型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。 |
GetType() |
現在の Type を取得します。 |
GetType(String) |
大文字と小文字を区別する検索を実行して、指定した名前の Type を取得します。 |
GetType(String, Boolean) |
大文字と小文字を区別する検索を実行し、型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の Type を取得します。 |
GetType(String, Boolean, Boolean) |
指定した名前を持つ Type を取得します。型が見つからない場合に例外をスローするかどうかと、大文字と小文字を区別する検索を実行するかどうかも指定します。 |
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) |
指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。 |
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) |
型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。 |
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)
- ソース:
- Type.CoreCLR.cs
- ソース:
- Type.CoreCLR.cs
- ソース:
- 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, 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
アセンブリ修飾名である必要があります (参照)。 AssemblyQualifiedName型が現在実行中のアセンブリまたは mscorlib.dll/System.Private.CoreLib.dll 内にある場合を除き、名前空間で修飾された型名を指定するだけで十分です。
- assemblyResolver
- Func<AssemblyName,Assembly>
で指定されたアセンブリを特定して返すメソッドtypeName
.
assemblyResolver
には、アセンブリ名が AssemblyName オブジェクトとして渡されます。
typeName
にアセンブリの名前が含まれていない場合、assemblyResolver
は呼び出されません。
assemblyResolver
を指定しない場合は、標準のアセンブリ解決が実行されます。
注意: 不明または信頼されていない呼び出し元からメソッドを渡さないでください。 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。 指定したメソッドまたは使い慣れているメソッドだけを使用してください。
typeName
で指定された型を、assemblyResolver
または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。 アセンブリが指定されていない場合は、このメソッドで指定できます。 このメソッドは、大文字小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには、ignoreCase
の値が渡されます。
注意: 不明または信頼されていない呼び出し元からメソッドを渡さないでください。
- throwOnError
- Boolean
型が見つからなかったときに例外をスローする場合は true
。false
を返す場合は null
。 また、false
を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。 「例外」を参照してください。
- ignoreCase
- Boolean
大文字と小文字を区別せずに true
の検索を実行するには typeName
。大文字と小文字を区別して false
の検索を実行するには typeName
。
戻り値
指定した名前を持つ型。 型が見つからない場合、throwOnError
パラメーターで null
を返すか例外をスローするかを指定します。 一部の場合は、throwOnError
の値に関係なく、例外がスローされます。 「例外」を参照してください。
例外
typeName
が null
です。
クラス初期化子が呼び出され、例外をスローします。
throwOnError
が true
です。型が見つかりません。
または
throwOnError
が true
です。 typeName
に埋め込まれたタブなどの正しくない文字が含まれています。
または
throwOnError
が true
です。 typeName
は空の文字列です。
または
throwOnError
が true
です。 typeName
は無効なサイズの配列型を表します。
または
typeName
が TypedReference の配列を表しています。
typeName
が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。
または
throwOnError
が true
です。typeName
に無効な構文 ("MyType[,*,]" など) が含まれています。
または
typeName
が、型引数の 1 つとしてポインター型、 ByRef
型、または Void を持つジェネリック型を表しています。
または
typeName
は型引数の数が正しくないジェネリック型を表します。
または
typeName
がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。
throwOnError
が true
です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。
アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。
または
typeName
に無効なアセンブリ名が含まれています。
または
typeName
が、型名のない有効なアセンブリ名です。
アセンブリまたはその依存関係のいずれかが、現在読み込まれているランタイムの有効なアセンブリではありません。
注釈
この API の詳細については、「 Type.GetType の補足 API 解説」を参照してください。
適用対象
GetType()
GetType(String)
- ソース:
- Type.CoreCLR.cs
- ソース:
- Type.CoreCLR.cs
- ソース:
- 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 型が現在実行中のアセンブリ内にある場合、または /System.Private.CoreLib.dll mscorlib.dllにある場合は、その名前空間で修飾された型名を指定するだけで十分です。
戻り値
存在する場合は、指定した名前を持つ型。それ以外の場合は null
。
例外
typeName
が null
です。
クラス初期化子が呼び出され、例外をスローします。
typeName
が、型引数の 1 つとしてポインター型、ByRef
型、または Void を持つジェネリック型を表しています。
または
typeName
は型引数の数が正しくないジェネリック型を表します。
または
typeName
がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。
typeName
は、 の配列 TypedReferenceなど、無効な型を表します。
アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。
注: Windows ストア アプリまたはポータブル クラス ライブラリ用の .NET では、代わりに基本クラスの例外 IOExceptionである をキャッチします。
アセンブリは、現在読み込まれているランタイムでは無効です。
例
次の例では、 の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
注釈
から取得できるアセンブリ修飾名がわかっている場合は、 メソッドを使用GetTypeして、別のアセンブリ内の型のオブジェクトを取得TypeAssemblyQualifiedNameできます。
GetType は、 で typeName
指定されたアセンブリの読み込みを引き起こします。 メソッドを使用してアセンブリをAssembly.Load読み込み、 メソッドまたは Assembly.GetTypes メソッドをAssembly.GetType使用してオブジェクトを取得Typeすることもできます。 型がコンパイル時にプログラムに認識されているアセンブリ内にある場合は、C# または Visual Basic の 演算子で使用 typeof
する方が GetType
効率的です。
注意
見つからない場合 typeName
、 メソッドの呼び出しは GetType(String) を返します null
。 例外はスローされません。 例外がスローされるかどうかを制御するには、 パラメーターを持つ メソッドの GetType オーバーロードを throwOnError
呼び出します。
GetType は、ディスクから読み込まれたアセンブリでのみ機能します。 を呼び出 GetType して、サービスを使用して定義された動的アセンブリで定義された型を検索すると、動作が System.Reflection.Emit 一貫性がない可能性があります。 動作は、動的アセンブリが永続的かどうか、つまり列挙体の System.Reflection.Emit.AssemblyBuilderAccess または Save
アクセス モードをRunAndSave
使用して作成されるかどうかによって異なります。 動的アセンブリが永続的で、 が呼び出される前に GetType
ディスクに書き込まれた場合、ローダーはディスク上の保存されたアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。 が呼び出されたときに GetType
アセンブリがディスクに保存されていない場合、 メソッドは を返します null
。
GetType
は、一時的な動的アセンブリを理解していません。したがって、 を呼び出 GetType
して一時的な動的アセンブリ内の型を取得すると、 が返されます null
。
動的モジュールで を使用 GetType
するには、イベントをサブスクライブし、保存する AppDomain.AssemblyResolve 前に を呼び出 GetType
します。 それ以外の場合は、メモリ内のアセンブリの 2 つのコピーを取得します。
次の表は、型に反映するときに メソッドによって Get
返される基底クラスのメンバーを示しています。
メンバーの型 | 静的 | 非静的 |
---|---|---|
コンストラクター | いいえ | いいえ |
フィールド | いいえ | はい。 フィールドは常に名前と署名で非表示になります。 |
Event | 適用なし | 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。 |
メソッド | いいえ | はい。 メソッド (仮想と非仮想の両方) は、名前で非表示にすることも、名前と署名で非表示にすることもできます。 |
入れ子になった型 | いいえ | いいえ |
プロパティ | 適用なし | 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。 |
名前と署名による非表示は、カスタム修飾子、戻り値の型、パラメーター型、sentinel、アンマネージド呼び出し規則など、署名のすべての部分を考慮します。 これはバイナリ比較です。
リフレクションの場合、プロパティとイベントは名前と署名によって非表示になります。 基底クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーしかない場合、派生クラス プロパティは基底クラス プロパティを非表示にし、基底クラスのセッターにアクセスすることはできません。
カスタム属性は、共通型システムの一部ではありません。
配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。
typeName
には、その名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。 以下を参照してください。AssemblyQualifiedName
名前空間が含まれているがアセンブリ名が含まれていない場合 typeName
、このメソッドは呼び出し元のオブジェクトのアセンブリのみを検索し、その順序で /System.Private.CoreLib.dll を mscorlib.dllします。 typeName が部分アセンブリ名または完全アセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。 アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。
プロパティは AssemblyQualifiedName 、入れ子になった型、アセンブリ名、ジェネリック型引数を含む完全修飾型名を返します。 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの単純な名前を出力し、リフレクションは、次の規則に従って、クエリ時にマングルされた名前を構築します。
注意
プロセッサ アーキテクチャはアセンブリ ID の一部であり、アセンブリ名の文字列の一部として指定できます。 たとえば、"ProcessorArchitecture=msil" とします。 ただし、互換性上の理由から、 プロパティによって AssemblyQualifiedName 返される文字列には含まれません。 オブジェクトを AssemblyName 作成し、 メソッドの適切なオーバーロードに渡すことで、型を Load 読み込むこともできます。 その後、 メソッドを Assembly.GetType 使用して、アセンブリから型を読み込むことができます。 参照 AssemblyName.ProcessorArchitecture.
区切り記号 | 説明 |
---|---|
円記号 (\) | エスケープ文字。 |
Backtick (') | ジェネリック型の名前の末尾にある型パラメーターの数を表す 1 つ以上の数字の前に置きます。 |
角かっこ ([]) | 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。 |
コンマ (,) | アセンブリ名の前に置きます。 |
ピリオド (.) | 名前空間識別子を示します。 |
プラス記号 (+) | 入れ子になったクラスの前。 |
たとえば、クラスの完全修飾名は次のようになります。
TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly
名前空間が TopNamespace.Sub+Namespace の場合、文字列はプラス記号 (+) の前にエスケープ文字 (\) を付けて、入れ子の区切り記号として解釈されないようにする必要があります。 リフレクションでは、次のようにこの文字列が出力されます。
TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly
"++" は "\+\+" になり、"\" は "\\" になります。
この修飾名を永続化し、後で を使用して を Type読み込むことができます。 を検索して読み込む Typeには、型名のみを指定するか、アセンブリ修飾型名を使用 GetType します。 GetType 型名のみを指定すると、呼び出し元のアセンブリ内の が検索 Type され、次に System アセンブリ内で が検索されます。 GetType アセンブリ修飾型名を使用すると、任意のアセンブリで が Type 検索されます。
型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字が含まれる場合があります。 これらの末尾の文字を含まない型名を取得するには、 を使用 t.GetElementType().ToString()
します。ここで t
、 は 型です。
スペースは、アセンブリ名を除くすべての型名コンポーネントに関連します。 アセンブリ名では、',' 区切り記号の前のスペースが関連しますが、',' 区切り記号の後のスペースは無視されます。
ジェネリック型の名前は、バックティック (') の後にジェネリック型引数の数を表す数字で終わります。 この名前の管理の目的は、コンパイラが同じ名前を持ち、異なる数の型パラメーターを持ち、同じスコープで発生するジェネリック型をサポートできるようにすることです。 たとえば、リフレクションは、ジェネリック メソッドTuple(Of T)
Tuple(Of T0, T1)
および Tuple`2
Visual Basic、または Tuple<T>
Visual C# で、壊れた名前Tuple`1
と Tuple<T0, T1>
を返します。
ジェネリック型の場合、型引数リストは角かっこで囲まれており、型引数はコンマで区切られます。 たとえば、ジェネリック Dictionary<TKey,TValue> には 2 つの型パラメーターがあります。
Dictionary<TKey,TValue>型Stringのキーを持つ の MyType
は、次のように表される場合があります。
System.Collections.Generic.Dictionary`2[System.String,MyType]
型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。 それ以外の場合、アセンブリ修飾名の部分を区切るコンマは、追加の型引数を区切るものとして解釈されます。 たとえば、 型StringのMyType
キーをDictionary<TKey,TValue>持つ fromMyAssembly.dll の は、次のように指定できます。
Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
注意
アセンブリ修飾型は、型パラメーター リスト内に出現する場合にのみ角かっこで囲むことができます。 型パラメーター リストで修飾型と非修飾型のアセンブリを検索する規則は、修飾型と非修飾非ジェネリック型の規則と同じです。
Null 許容型は、ジェネリック型の特殊なケースです。 たとえば、null 許容 Int32 は文字列 "System.Nullable'1[System.Int32] で表されます。
注意
C#、C++、Visual Basic では、型演算子を使用して null 許容型を取得することもできます。 たとえば、null 許容 Boolean 型は、C# では によって typeof(Nullable<bool>)
、C++ では によって Nullable<Boolean>::typeid
、Visual Basic では によって GetType(Nullable(Of Boolean))
返されます。
次の表は、さまざまな型に GetType
使用する構文を示しています。
取得するには | 使用 |
---|---|
null 許容 Int32 | Type.GetType("System.Nullable`1[System.Int32]") |
へのアンマネージ ポインター MyType |
Type.GetType("MyType*") |
へのポインターへのアンマネージ ポインター MyType |
Type.GetType("MyType**") |
マネージド ポインターまたは への参照 MyType |
Type.GetType("MyType&") . ポインターとは異なり、参照は 1 つのレベルに制限されます。 |
親クラスと入れ子になったクラス | 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[,]") |
1 つの型引数を持つジェネリック型 | Type.GetType("MyGenericType`1[MyType]") |
2 つの型引数を持つジェネリック型 | Type.GetType("MyGenericType`2[MyType,AnotherType]") |
2 つのアセンブリ修飾型引数を持つジェネリック型 | Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]") |
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型 | Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly") |
型引数が 2 つの型引数を持つジェネリック型であるジェネリック型 | Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]") |
こちらもご覧ください
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- 完全修飾型名の指定
適用対象
GetType(String, Boolean)
- ソース:
- Type.CoreCLR.cs
- ソース:
- Type.CoreCLR.cs
- ソース:
- Type.CoreCLR.cs
大文字と小文字を区別する検索を実行し、型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の 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 型が現在実行中のアセンブリ内にある場合、または /System.Private.CoreLib.dll mscorlib.dllにある場合は、その名前空間で修飾された型名を指定するだけで十分です。
- throwOnError
- Boolean
型が見つからなかったときに例外をスローする場合は true
。false
を返す場合は null
。 また、false
を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。 「例外」を参照してください。
戻り値
指定した名前を持つ型。 型が見つからない場合、throwOnError
パラメーターで null
を返すか例外をスローするかを指定します。 一部の場合は、throwOnError
の値に関係なく、例外がスローされます。 「例外」を参照してください。
例外
typeName
が null
です。
クラス初期化子が呼び出され、例外をスローします。
throwOnError
が true
です。型が見つかりません。
または
throwOnError
が true
です。 typeName
に埋め込まれたタブなどの正しくない文字が含まれています。
または
throwOnError
が true
です。 typeName
は空の文字列です。
または
throwOnError
が true
です。 typeName
は無効なサイズの配列型を表します。
または
typeName
が TypedReference の配列を表しています。
throwOnError
が true
で、 typeName
に正しくない構文が含まれています。 例: "MyType[,*,]"。
または
typeName
が、型引数の 1 つとしてポインター型、 ByRef
型、または Void を持つジェネリック型を表しています。
または
typeName
は型引数の数が正しくないジェネリック型を表します。
または
typeName
がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。
throwOnError
が true
です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。
アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。
注: Windows ストア アプリまたはポータブル クラス ライブラリ用の .NET では、代わりに基本クラスの例外 IOExceptionである をキャッチします。
アセンブリまたはその依存関係のいずれかが、現在読み込まれているランタイムに対して無効です。
例
次の例では、 の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
注釈
から取得できるアセンブリ修飾名がわかっている場合は、 メソッドを使用GetTypeして、別のアセンブリ内の型のオブジェクトを取得TypeAssemblyQualifiedNameできます。
GetType は、 で typeName
指定されたアセンブリの読み込みを引き起こします。 メソッドを使用してアセンブリをAssembly.Load読み込み、 メソッドまたは Assembly.GetTypes メソッドをAssembly.GetType使用してオブジェクトを取得Typeすることもできます。 型がコンパイル時にプログラムに認識されているアセンブリ内にある場合は、C# または Visual Basic の 演算子で使用 typeof
する方が GetType
効率的です。
GetType
は、ディスクから読み込まれたアセンブリでのみ機能します。 を呼び出 GetType
して、サービスを使用して定義された動的アセンブリで定義された型を検索すると、動作が System.Reflection.Emit 一貫性がない可能性があります。 動作は、動的アセンブリが永続的かどうか、つまり列挙体の System.Reflection.Emit.AssemblyBuilderAccess または Save
アクセス モードをRunAndSave
使用して作成されるかどうかによって異なります。 動的アセンブリが永続的で、 が呼び出される前に GetType
ディスクに書き込まれた場合、ローダーはディスク上の保存されたアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。 が呼び出されたときに GetType
アセンブリがディスクに保存されていない場合、 メソッドは を返します null
。
GetType
は、一時的な動的アセンブリを理解していません。したがって、 を呼び出して GetType
一時的な動的アセンブリ内の型を取得すると、 が返されます null
。
動的モジュールで を使用 GetType
するには、イベントをサブスクライブし、保存する AppDomain.AssemblyResolve 前に を呼び出 GetType
します。 それ以外の場合は、メモリ内にアセンブリの 2 つのコピーが取得されます。
パラメーターは throwOnError
、型が見つからない場合の動作を指定し、「例外」セクションで説明されているように、他の特定の例外条件も抑制します。 の値に関係なく、一部の throwOnError
例外がスローされます。 たとえば、型が見つかっても読み込むことができない場合throwOnError
false
、 TypeLoadException が であっても がスローされます。
次の表は、型に反映するときに、 メソッドによって Get
返される基底クラスのメンバーを示しています。
メンバーの型 | 静的 | 非静的 |
---|---|---|
コンストラクター | いいえ | いいえ |
フィールド | いいえ | はい。 フィールドは常に名前と署名で非表示になります。 |
Event | 適用なし | 一般的な型システムルールは、継承が プロパティを実装するメソッドと同じであるということです。 リフレクションでは、プロパティが名前と署名による非表示として扱われます。 以下の注 2 を参照してください。 |
メソッド | いいえ | はい。 メソッド (仮想と非仮想の両方) には、名前による非表示または名前と署名による非表示を指定できます。 |
入れ子になった型 | いいえ | いいえ |
プロパティ | 適用なし | 一般的な型システムルールは、継承が プロパティを実装するメソッドと同じであるということです。 リフレクションでは、プロパティが名前と署名による非表示として扱われます。 以下の注 2 を参照してください。 |
名前と署名による非表示では、カスタム修飾子、戻り値の型、パラメーター型、sentinel、アンマネージド呼び出し規則など、署名のすべての部分が考慮されます。 これはバイナリ比較です。
リフレクションの場合、プロパティとイベントは名前と署名による非表示になります。 基底クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーのみが含まれている場合、派生クラス プロパティは基底クラス プロパティを非表示にし、基底クラスのセッターにアクセスすることはできません。
カスタム属性は、共通型システムの一部ではありません。
配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。
typeName
には、名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。 以下を参照してください。AssemblyQualifiedName
名前空間が含まれているがアセンブリ名が含まれていない場合 typeName
、このメソッドは呼び出し元のオブジェクトのアセンブリのみを検索し、その順序で /System.Private.CoreLib.dll を mscorlib.dllします。 typeName が部分アセンブリ名または完全アセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。 アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。
プロパティは AssemblyQualifiedName 、入れ子になった型、アセンブリ名、ジェネリック引数を含む完全修飾型名を返します。 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの単純な名前を出力し、リフレクションは、次の規則に従って、クエリ時にマングルされた名前を構築します。
注意
プロセッサ アーキテクチャはアセンブリ ID の一部であり、アセンブリ名の文字列の一部として指定できます。 たとえば、"ProcessorArchitecture=msil" とします。 ただし、互換性上の理由から、 プロパティによって AssemblyQualifiedName 返される文字列には含まれません。 オブジェクトを AssemblyName 作成し、 メソッドの適切なオーバーロードに渡すことで、型を Load 読み込むこともできます。 その後、 メソッドを Assembly.GetType 使用して、アセンブリから型を読み込むことができます。 参照 AssemblyName.ProcessorArchitecture.
区切り記号 | 説明 |
---|---|
円記号 (\) | エスケープ文字。 |
Backtick (') | ジェネリック型の名前の末尾にある型パラメーターの数を表す 1 つ以上の数字の前に置きます。 |
角かっこ ([]) | 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。 |
コンマ (,) | アセンブリ名の前に置きます。 |
ピリオド (.) | 名前空間識別子を示します。 |
プラス記号 (+) | 入れ子になったクラスの前。 |
たとえば、クラスの完全修飾名は次のようになります。
TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly
名前空間が TopNamespace.Sub+Namespace の場合、文字列はプラス記号 (+) の前にエスケープ文字 (\) を付けて、入れ子の区切り記号として解釈されないようにする必要があります。 リフレクションでは、次のようにこの文字列が出力されます。
TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly
"++" は "\+\+" になり、"\" は "\\" になります。
この修飾名を永続化し、後で を使用して を Type読み込むことができます。 を検索して読み込む Typeには、型名のみを指定するか、アセンブリ修飾型名を使用 GetType します。 GetType 型名のみを指定すると、呼び出し元のアセンブリ内の が検索 Type され、次に System アセンブリ内で が検索されます。 GetType アセンブリ修飾型名を使用すると、任意のアセンブリで が Type 検索されます。
型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字が含まれる場合があります。 これらの末尾の文字を含まない型名を取得するには、 を使用 t.GetElementType().ToString()
します。ここで t
、 は 型です。
スペースは、アセンブリ名を除くすべての型名コンポーネントに関連します。 アセンブリ名では、',' 区切り記号の前のスペースが関連しますが、',' 区切り記号の後のスペースは無視されます。
ジェネリック型の名前は、バックティック (') の後にジェネリック型引数の数を表す数字で終わります。 この名前の管理の目的は、コンパイラが同じ名前を持ち、異なる数の型パラメーターを持ち、同じスコープで発生するジェネリック型をサポートできるようにすることです。 たとえば、リフレクションは、ジェネリック メソッドTuple(Of T)
Tuple(Of T0, T1)
および Tuple`2
Visual Basic、または Tuple<T>
Visual C# で、壊れた名前Tuple`1
と Tuple<T0, T1>
を返します。
ジェネリック型の場合、型引数リストは角かっこで囲まれており、型引数はコンマで区切られます。 たとえば、ジェネリック Dictionary<TKey,TValue> には 2 つの型パラメーターがあります。
Dictionary<TKey,TValue>型Stringのキーを持つ の MyType
は、次のように表される場合があります。
System.Collections.Generic.Dictionary`2[System.String,MyType]
型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。 それ以外の場合、アセンブリ修飾名の部分を区切るコンマは、追加の型引数を区切るものとして解釈されます。 たとえば、 型StringのMyType
キーをDictionary<TKey,TValue>持つ MyAssembly.dll の を次のように指定できます。
Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
注意
アセンブリ修飾型は、型パラメーター リスト内に出現する場合にのみ角かっこで囲むことができます。 型パラメーター リストで修飾型と非修飾型のアセンブリを検索する規則は、修飾型と非修飾非ジェネリック型の規則と同じです。
Null 許容型は、ジェネリック型の特殊なケースです。 たとえば、null 許容 Int32 は文字列 "System.Nullable'1[System.Int32] で表されます。
注意
C#、C++、Visual Basic では、型演算子を使用して null 許容型を取得することもできます。 たとえば、null 許容 Boolean 型は、C# では によって typeof(Nullable<bool>)
、C++ では によって Nullable<Boolean>::typeid
、Visual Basic では によって GetType(Nullable(Of Boolean))
返されます。
次の表は、さまざまな型に GetType
使用する構文を示しています。
取得するには | 使用 |
---|---|
null 許容 Int32 | Type.GetType("System.Nullable`1[System.Int32]") |
へのアンマネージ ポインター MyType |
Type.GetType("MyType*") |
へのポインターへのアンマネージ ポインター MyType |
Type.GetType("MyType**") |
マネージド ポインターまたは への参照 MyType |
Type.GetType("MyType&") . ポインターとは異なり、参照は 1 つのレベルに制限されます。 |
親クラスと入れ子になったクラス | 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[,]") |
1 つの型引数を持つジェネリック型 | Type.GetType("MyGenericType`1[MyType]") |
2 つの型引数を持つジェネリック型 | Type.GetType("MyGenericType`2[MyType,AnotherType]") |
2 つのアセンブリ修飾型引数を持つジェネリック型 | Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]") |
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型 | Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly") |
型引数が 2 つの型引数を持つジェネリック型であるジェネリック型 | Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]") |
こちらもご覧ください
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- 完全修飾型名の指定
適用対象
GetType(String, Boolean, Boolean)
- ソース:
- Type.CoreCLR.cs
- ソース:
- Type.CoreCLR.cs
- ソース:
- Type.CoreCLR.cs
指定した名前を持つ 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 型が現在実行中のアセンブリまたは mscorlib.dll/System.Private.CoreLib.dll にある場合は、その名前空間で修飾された型名を指定するだけで十分です。
- throwOnError
- Boolean
型が見つからなかったときに例外をスローする場合は true
。false
を返す場合は null
。 また、false
を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。 「例外」を参照してください。
- ignoreCase
- Boolean
大文字と小文字を区別せずに true
の検索を実行するには typeName
。大文字と小文字を区別して false
の検索を実行するには typeName
。
戻り値
指定した名前を持つ型。 型が見つからない場合、throwOnError
パラメーターで null
を返すか例外をスローするかを指定します。 一部の場合は、throwOnError
の値に関係なく、例外がスローされます。 「例外」を参照してください。
例外
typeName
が null
です。
クラス初期化子が呼び出され、例外をスローします。
throwOnError
が true
です。型が見つかりません。
または
throwOnError
が true
です。 typeName
に埋め込まれたタブなどの正しくない文字が含まれています。
または
throwOnError
が true
です。 typeName
は空の文字列です。
または
throwOnError
が true
です。 typeName
は無効なサイズの配列型を表します。
または
typeName
が TypedReference の配列を表しています。
throwOnError
が true
で、 typeName
に正しくない構文が含まれています。 例: "MyType[,*,]"。
または
typeName
が、型引数の 1 つとしてポインター型、 ByRef
型、または Void を持つジェネリック型を表しています。
または
typeName
は型引数の数が正しくないジェネリック型を表します。
または
typeName
がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。
throwOnError
が true
です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。
アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。
アセンブリは、現在読み込まれているランタイムでは無効です。
注釈
から取得できるアセンブリ修飾名がわかっている場合は、 メソッドを使用GetTypeして、別のアセンブリ内の型のオブジェクトを取得TypeAssemblyQualifiedNameできます。
GetType では、 で typeName
指定されたアセンブリの読み込みが発生します。 メソッドを使用してAssembly.Loadアセンブリを読み込み、 メソッドまたは Assembly.GetTypes メソッドをAssembly.GetType使用してオブジェクトを取得Typeすることもできます。 型がコンパイル時にプログラムに認識されているアセンブリ内にある場合は、C# または Visual Basic の 演算子で使用 typeof
する方が GetType
効率的です。
GetType
は、ディスクから読み込まれたアセンブリでのみ機能します。 を呼び出 GetType
して、サービスを使用して定義された動的アセンブリで定義されている型を System.Reflection.Emit 検索すると、動作が矛盾する可能性があります。 動作は、動的アセンブリが永続的かどうか、つまり列挙型の または Save
アクセス モードSystem.Reflection.Emit.AssemblyBuilderAccessを使用してRunAndSave
作成されたかどうかによって異なります。 動的アセンブリが永続的であり、 が呼び出される前に GetType
ディスクに書き込まれた場合、ローダーはディスク上の保存されたアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。 が呼び出されたときに GetType
アセンブリがディスクに保存されていない場合、 メソッドは を返します null
。
GetType
は、一時的な動的アセンブリを理解していません。したがって、 を呼び出 GetType
して一時的な動的アセンブリ内の型を取得すると、 が返されます null
。
動的モジュールで を使用 GetType
するには、イベントをサブスクライブし、保存する AppDomain.AssemblyResolve 前に を呼び出 GetType
します。 それ以外の場合は、メモリ内のアセンブリの 2 つのコピーを取得します。
パラメーターは throwOnError
、型が見つからない場合の動作を指定し、「例外」セクションで説明されているように、他の特定の例外条件も抑制します。 の値に関係なく、一部の throwOnError
例外がスローされます。 たとえば、型が見つかったが読み込めない場合、 TypeLoadException が の場合throwOnError
false
でも がスローされます。
次の表は、型に反映するときに メソッドによって Get
返される基底クラスのメンバーを示しています。
メンバーの型 | 静的 | 非静的 |
---|---|---|
コンストラクター | いいえ | いいえ |
フィールド | いいえ | はい。 フィールドは常に名前と署名で非表示になります。 |
Event | 適用なし | 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。 |
メソッド | いいえ | はい。 メソッド (仮想と非仮想の両方) は、名前で非表示にすることも、名前と署名で非表示にすることもできます。 |
入れ子になった型 | いいえ | いいえ |
プロパティ | 適用なし | 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。 |
名前と署名による非表示は、カスタム修飾子、戻り値の型、パラメーター型、sentinel、アンマネージド呼び出し規則など、署名のすべての部分を考慮します。 これはバイナリ比較です。
リフレクションの場合、プロパティとイベントは名前と署名によって非表示になります。 基底クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーしかない場合、派生クラス プロパティは基底クラス プロパティを非表示にし、基底クラスのセッターにアクセスすることはできません。
カスタム属性は、共通型システムの一部ではありません。
配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。
typeName
には、その名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。 以下を参照してください。AssemblyQualifiedName
名前空間が含まれているがアセンブリ名が含まれていない場合 typeName
、このメソッドは呼び出し元のオブジェクトのアセンブリのみを検索し、その順序で /System.Private.CoreLib.dll を mscorlib.dllします。 typeName が部分アセンブリ名または完全アセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。 アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。
プロパティは AssemblyQualifiedName 、入れ子になった型、アセンブリ名、および型引数を含む完全修飾型名を返します。 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの単純な名前を出力し、リフレクションは、次の規則に従って、クエリ時にマングルされた名前を構築します。
注意
プロセッサ アーキテクチャはアセンブリ ID の一部であり、アセンブリ名の文字列の一部として指定できます。 たとえば、"ProcessorArchitecture=msil" とします。 ただし、互換性上の理由から、 プロパティによって AssemblyQualifiedName 返される文字列には含まれません。 オブジェクトを AssemblyName 作成し、 メソッドの適切なオーバーロードに渡すことで、型を Load 読み込むこともできます。 その後、 メソッドを Assembly.GetType 使用して、アセンブリから型を読み込むことができます。 参照 AssemblyName.ProcessorArchitecture.
区切り記号 | 説明 |
---|---|
円記号 (\) | エスケープ文字。 |
Backtick (') | ジェネリック型の名前の末尾にある型パラメーターの数を表す 1 つ以上の数字の前に置きます。 |
角かっこ ([]) | 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。 |
コンマ (,) | アセンブリ名の前に置きます。 |
ピリオド (.) | 名前空間識別子を示します。 |
プラス記号 (+) | 入れ子になったクラスの前。 |
たとえば、クラスの完全修飾名は次のようになります。
TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly
名前空間が TopNamespace.Sub+Namespace の場合、文字列はプラス記号 (+) の前にエスケープ文字 (\) を付けて、入れ子の区切り記号として解釈されないようにする必要があります。 リフレクションでは、次のようにこの文字列が出力されます。
TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly
"++" は "\+\+" になり、"\" は "\\" になります。
この修飾名を永続化し、後で を使用して を Type読み込むことができます。 を検索して読み込む Typeには、型名のみを指定するか、アセンブリ修飾型名を使用 GetType します。 GetType 型名のみを指定すると、呼び出し元のアセンブリ内の が検索 Type され、次に System アセンブリ内で が検索されます。 GetType アセンブリ修飾型名を使用すると、任意のアセンブリで が Type 検索されます。
型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字が含まれる場合があります。 これらの末尾の文字を含まない型名を取得するには、 を使用 t.GetElementType().ToString()
します。ここで t
、 は 型です。
スペースは、アセンブリ名を除くすべての型名コンポーネントに関連します。 アセンブリ名では、',' 区切り記号の前のスペースが関連しますが、',' 区切り記号の後のスペースは無視されます。
ジェネリック型の名前は、バックティック (') の後にジェネリック型引数の数を表す数字で終わります。 この名前のマングリングの目的は、コンパイラが同じ名前で異なる数の型パラメーターを持つジェネリック型をサポートできるようにすることです。これは、同じスコープで発生します。 たとえば、リフレクションは、ジェネリック メソッドTuple(Of T0, T1)
Tuple(Of T)
および Tuple`2
Visual Basic、または Tuple<T>
Visual C# で、マングルされた名前Tuple`1
と Tuple<T0, T1>
を返します。
ジェネリック型の場合、型引数リストは角かっこで囲み、型引数はコンマで区切られます。 たとえば、ジェネリック Dictionary<TKey,TValue> には 2 つの型パラメーターがあります。
Dictionary<TKey,TValue>型StringのMyType
キーを持つ の は、次のように表される場合があります。
System.Collections.Generic.Dictionary`2[System.String,MyType]
型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。 それ以外の場合、アセンブリ修飾名の部分を区切るコンマは、追加の型引数を区切るものとして解釈されます。 たとえば、 型StringのMyType
キーをDictionary<TKey,TValue>持つ MyAssembly.dll の を次のように指定できます。
Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
注意
アセンブリ修飾型は、型パラメーター リスト内に表示される場合にのみ角かっこで囲むことができます。 型パラメーター リストで修飾型と非修飾型のアセンブリを検索する規則は、修飾型と非修飾非ジェネリック型の規則と同じです。
Null 許容型は、ジェネリック型の特殊なケースです。 たとえば、null 許容 Int32 は文字列 "System.Nullable'1[System.Int32]" で表されます。
注意
C#、C++、および Visual Basic では、型演算子を使用して null 許容型を取得することもできます。 たとえば、null 許容 Boolean 型は、C# では によって typeof(Nullable<bool>)
、C++ では によって Nullable<Boolean>::typeid
、Visual Basic では によって GetType(Nullable(Of Boolean))
返されます。
次の表は、さまざまな型に GetType
使用する構文を示しています。
取得するには | 使用 |
---|---|
null 許容 Int32 | Type.GetType("System.Nullable`1[System.Int32]") |
へのアンマネージド ポインター MyType |
Type.GetType("MyType*") |
へのポインターへのアンマネージ ポインター MyType |
Type.GetType("MyType**") |
マネージド ポインターまたは への参照 MyType |
Type.GetType("MyType&") . ポインターとは異なり、参照は 1 つのレベルに制限されます。 |
親クラスと入れ子になったクラス | 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[,]") |
1 つの型引数を持つジェネリック型 | Type.GetType("MyGenericType`1[MyType]") |
2 つの型引数を持つジェネリック型 | Type.GetType("MyGenericType`2[MyType,AnotherType]") |
2 つのアセンブリ修飾型引数を持つジェネリック型 | Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]") |
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型 | Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly") |
型引数が 2 つの型引数を持つジェネリック型であるジェネリック型 | 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>)
- ソース:
- Type.CoreCLR.cs
- ソース:
- Type.CoreCLR.cs
- ソース:
- 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
アセンブリ修飾名である必要があります (参照)。 AssemblyQualifiedName型が現在実行中のアセンブリまたは mscorlib.dll/System.Private.CoreLib.dll 内にある場合を除き、名前空間で修飾された型名を指定するだけで十分です。
- assemblyResolver
- Func<AssemblyName,Assembly>
で指定されたアセンブリを特定して返すメソッドtypeName
.
assemblyResolver
には、アセンブリ名が AssemblyName オブジェクトとして渡されます。
typeName
にアセンブリの名前が含まれていない場合、assemblyResolver
は呼び出されません。
assemblyResolver
を指定しない場合は、標準のアセンブリ解決が実行されます。
注意: 不明または信頼されていない呼び出し元からメソッドを渡さないでください。 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。 指定したメソッドまたは使い慣れているメソッドだけを使用してください。
typeName
で指定された型を、assemblyResolver
または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。 アセンブリが指定されていない場合は、typeResolver
メソッドで指定できます。 このメソッドは、大文字と小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには false
が渡されます。
注意: 不明または信頼されていない呼び出し元からメソッドを渡さないでください。
戻り値
指定された名前の型。型が見つからない場合は null
。
例外
typeName
が null
です。
クラス初期化子が呼び出され、例外をスローします。
typeName
が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。
または
typeName
が、型引数の 1 つとしてポインター型、 ByRef
型、または Void を持つジェネリック型を表しています。
または
typeName
は型引数の数が正しくないジェネリック型を表します。
または
typeName
がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。
typeName
は、 の配列 TypedReferenceなど、無効な型を表します。
アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。
または
typeName
に無効なアセンブリ名が含まれています。
または
typeName
が、型名のない有効なアセンブリ名です。
アセンブリまたはその依存関係のいずれかが、現在読み込まれているランタイムに対して無効です。
注釈
このメソッドの使用シナリオと および パラメーターのassemblyResolver
typeResolver
詳細については、 メソッドのオーバーロードをGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)参照してください。
注意
見つからない場合 typeName
、 メソッドの呼び出しは GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) を返します null
。 例外はスローされません。 例外がスローされるかどうかを制御するには、 パラメーターを持つ メソッドの GetType オーバーロードを throwOnError
呼び出します。
このメソッド オーバーロードの呼び出しは、メソッド オーバーロードをGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)呼び出し、 パラメーターと パラメーターを指定するfalse
throwOnError
のとignoreCase
同じです。
適用対象
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)
- ソース:
- Type.CoreCLR.cs
- ソース:
- Type.CoreCLR.cs
- ソース:
- 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, 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
アセンブリ修飾名である必要があります (参照)。 AssemblyQualifiedName型が現在実行中のアセンブリまたは mscorlib.dll/System.Private.CoreLib.dll 内にある場合を除き、名前空間で修飾された型名を指定するだけで十分です。
- assemblyResolver
- Func<AssemblyName,Assembly>
で指定されたアセンブリを特定して返すメソッドtypeName
.
assemblyResolver
には、アセンブリ名が AssemblyName オブジェクトとして渡されます。
typeName
にアセンブリの名前が含まれていない場合、assemblyResolver
は呼び出されません。
assemblyResolver
を指定しない場合は、標準のアセンブリ解決が実行されます。
注意: 不明または信頼されていない呼び出し元からメソッドを渡さないでください。 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。 指定したメソッドまたは使い慣れているメソッドだけを使用してください。
typeName
で指定された型を、assemblyResolver
または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。 アセンブリが指定されていない場合は、このメソッドで指定できます。 このメソッドは、大文字と小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには false
が渡されます。
注意: 不明または信頼されていない呼び出し元からメソッドを渡さないでください。
- throwOnError
- Boolean
型が見つからなかったときに例外をスローする場合は true
。false
を返す場合は null
。 また、false
を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。 「例外」を参照してください。
戻り値
指定した名前を持つ型。 型が見つからない場合、throwOnError
パラメーターで null
を返すか例外をスローするかを指定します。 一部の場合は、throwOnError
の値に関係なく、例外がスローされます。 「例外」を参照してください。
例外
typeName
が null
です。
クラス初期化子が呼び出され、例外をスローします。
throwOnError
が true
です。型が見つかりません。
または
throwOnError
が true
です。 typeName
に埋め込まれたタブなどの正しくない文字が含まれています。
または
throwOnError
が true
です。 typeName
は空の文字列です。
または
throwOnError
が true
です。 typeName
は無効なサイズの配列型を表します。
または
typeName
が TypedReference の配列を表しています。
typeName
が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。
または
throwOnError
が true
です。typeName
に無効な構文 ("MyType[,*,]" など) が含まれています。
または
typeName
が、型引数の 1 つとしてポインター型、 ByRef
型、または Void を持つジェネリック型を表しています。
または
typeName
は型引数の数が正しくないジェネリック型を表します。
または
typeName
がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。
throwOnError
が true
です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。
または
typeName
に無効なアセンブリ名が含まれています。
または
typeName
が、型名のない有効なアセンブリ名です。
アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。
アセンブリまたはその依存関係のいずれかが、現在読み込まれているランタイムに対して無効です。
注釈
このメソッドの使用シナリオと および パラメーターのassemblyResolver
typeResolver
詳細については、 メソッドのオーバーロードを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