Type.GetType メソッド

定義

指定された型を表す Type オブジェクトを取得します。Gets a Type object that represents the specified type.

オーバーロード

GetType()

現在の Type を取得します。Gets the current Type.

GetType(String)

大文字と小文字を区別する検索を実行して、指定した名前の Type を取得します。Gets the Type with the specified name, performing a case-sensitive search.

GetType(String, Boolean)

大文字と小文字を区別する検索を実行し、型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の Type を取得します。Gets the Type with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found.

GetType(String, Boolean, Boolean)

指定した名前を持つ Type を取得します。型が見つからない場合に例外をスローするかどうかと、大文字と小文字を区別する検索を実行するかどうかも指定します。Gets the Type with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。Gets the type with the specified name, specifying whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

大文字と小文字を区別せずに検索を実行するかどうか、および型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。Gets the type with the specified name, specifying whether to perform a case-sensitive search and whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

GetType()

現在の Type を取得します。Gets the current Type.

public:
 virtual Type ^ GetType();
public Type GetType ();
override this.GetType : unit -> Type
Public Function GetType () As Type

戻り値

現在の Type です。The current Type.

実装

例外

クラス初期化子が呼び出され、例外をスローします。A class initializer is invoked and throws an exception.

こちらもご覧ください

GetType(String)

大文字と小文字を区別する検索を実行して、指定した名前の Type を取得します。Gets the Type with the specified name, performing a case-sensitive search.

public:
 static Type ^ GetType(System::String ^ typeName);
public static Type GetType (string typeName);
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type

パラメーター

typeName
String

取得する型のアセンブリ修飾名。The assembly-qualified name of the type to get. 以下を参照してください。AssemblyQualifiedNameSee AssemblyQualifiedName. 型が現在実行されているアセンブリ内または Mscorlib.dll にある場合は、名前空間で修飾された型名を提供するだけで十分です。If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

戻り値

存在する場合は、指定した名前を持つ型。それ以外の場合は nullThe type with the specified name, if found; otherwise, null.

例外

typeNamenullです。typeName is null.

クラス初期化子が呼び出され、例外をスローします。A class initializer is invoked and throws an exception.

typeName が、型引数の 1 つとしてポインター型、ByRef 型、または Void を持つジェネリック型を表しています。typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- または --or- typeName は型引数の数が正しくないジェネリック型を表します。typeName represents a generic type that has an incorrect number of type arguments.

- または --or- typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeNameTypedReference の配列を表しています。typeName represents an array of TypedReference.

Windows ストア アプリ用 .NET またはポータブル クラス ライブラリでは、基本クラスの例外である IOException を代わりにキャッチします。In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。The assembly or one of its dependencies was found, but could not be loaded.

アセンブリまたはその依存関係のうちの 1 つが正しくありません。The assembly or one of its dependencies is not valid.

- または --or-

共通言語ランタイムの Version 2.0 以降を現在読み込み中です。またアセンブリは新しいバージョンでコンパイルされました。Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

次の例では、のSystem.Int32型を取得し、その型のFullNameオブジェクトをSystem.Int32使用して、のプロパティを表示します。The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32.

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
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わかっている場合Typeは、メソッドを使用して、別のアセンブリ内の型のオブジェクトを取得できます。 AssemblyQualifiedNameこの名前はから取得できます。You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypetypeName指定されたアセンブリの読み込みを発生させます。GetType causes loading of the assembly specified in typeName. また、 Assembly.Loadメソッドを使用してアセンブリを読み込み、メソッドまたはAssembly.GetTypesメソッドをType使用してオブジェクトを取得することもできます。 Assembly.GetTypeYou can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. コンパイル時にプログラムによって認識されるアセンブリに型がある場合は、 typeof C#またはGetType Visual Basic で演算子を使用する方が効率的です。If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

注意

typeName見つからない場合、メソッドのGetType(String)呼び出しはを返しnullます。If typeName cannot be found, the call to the GetType(String) method returns null. 例外はスローされません。It does not throw an exception. 例外がスローされるかどうかを制御するにはGetType 、パラメーターをthrowOnError持つメソッドのオーバーロードを呼び出します。To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

GetTypeは、ディスクから読み込まれたアセンブリに対してのみ機能します。GetType only works on assemblies loaded from disk. を呼び出しGetTypeて、 System.Reflection.Emitサービスを使用して定義された動的アセンブリで定義されている型を検索すると、一貫性のない動作が発生する可能性があります。If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. 動作は、動的アセンブリが永続的である (つまり、 RunAndSave System.Reflection.Emit.AssemblyBuilderAccess列挙体のアクセスモードまたSaveはアクセスモードを使用して作成される) かどうかによって異なります。The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. が呼び出される前にGetType動的アセンブリが永続的でディスクに書き込まれている場合、ローダーはディスク上に保存されているアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. が呼び出されたときGetTypeにアセンブリがディスクに保存されていない場合、メソッドはを返しnullます。If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeは、一時的な動的アセンブリを認識しません。そのため、 GetTypeを呼び出して、一時動的アセンブリ内の型nullを取得すると、が返されます。GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

動的モジュールGetTypeでを使用するには、 AppDomain.AssemblyResolveイベントをサブスクライブしGetType 、を保存する前にを呼び出します。To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. それ以外の場合は、メモリ内のアセンブリのコピーが2つ取得されます。Otherwise, you will get two copies of the assembly in memory.

次の表は、型に対してリフレクションを行うときにGet 、メソッドによって返される基底クラスのメンバーを示しています。The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

メンバーの型Member Type スタティックStatic 非静的Non-Static
コンストラクターConstructor いいえNo いいえNo
フィールドField いいえNo はい。Yes. フィールドは、常に名前と署名で隠ぺいされます。A field is always hide-by-name-and-signature.
eventEvent 利用不可Not applicable 共通型システムの規則は、継承が、プロパティを実装するメソッドと同じであることを示します。The common type system rule is that the inheritance is the same as that of the methods that implement the property. リフレクションは、プロパティを名前で隠す、署名として扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ2を参照してください。See note 2 below.
メソッドMethod いいえNo はい。Yes. メソッド (仮想と非仮想の両方) は、非表示にするか、名前と署名を隠すことができます。A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
入れ子にされた型Nested Type いいえNo いいえNo
プロパティProperty 利用不可Not applicable 共通型システムの規則は、継承が、プロパティを実装するメソッドと同じであることを示します。The common type system rule is that the inheritance is the same as that of the methods that implement the property. リフレクションは、プロパティを名前で隠す、署名として扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ2を参照してください。See note 2 below.
  1. 名前による隠ぺいと署名では、カスタム修飾子、戻り値の型、パラメーターの型、sentinel、アンマネージ呼び出し規約を含む、シグネチャのすべての部分が考慮されます。Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. これは、バイナリ比較です。This is a binary comparison.

  2. リフレクションの場合、プロパティとイベントは、名前とシグネチャが隠ぺいされます。For reflection, properties and events are hide-by-name-and-signature. 基底クラスに get と set の両方のアクセサーを持つプロパティがあり、派生クラスに get アクセサーのみがある場合、派生クラスのプロパティは基底クラスのプロパティを非表示にします。基底クラスの setter にアクセスすることはできません。If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. カスタム属性は、共通型システムの一部ではありません。Custom attributes are not part of the common type system.

配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. 以下を参照してください。AssemblyQualifiedNameSee AssemblyQualifiedName.

typeName名前空間を含み、アセンブリ名を含まない場合、このメソッドは、呼び出し元のオブジェクトのアセンブリと mscorlib.dll だけをその順序で検索します。If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. TypeName が部分的または完全なアセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。If the assembly has a strong name, a complete assembly name is required.

プロパティAssemblyQualifiedNameは、入れ子にされた型、アセンブリ名、およびジェネリック型引数を含む完全修飾型名を返します。The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic type arguments. 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの簡易名を出力します。リフレクションは、次の規則に従って、クエリを実行すると、破損した名前を生成します。All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

注意

.NET Framework バージョン2.0 では、プロセッサアーキテクチャがアセンブリ id に追加され、アセンブリ名文字列の一部として指定できるようになりました。In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. たとえば、"ProcessorArchitecture = msil" のようになります。For example, "ProcessorArchitecture=msil". ただし、互換性上の理由から、 AssemblyQualifiedNameプロパティによって返される文字列には含まれません。However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. AssemblyNameオブジェクトを作成し、 Loadメソッドの適切なオーバーロードに渡すことで、型を読み込むこともできます。You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. その後、 Assembly.GetTypeメソッドを使用して、アセンブリから型を読み込むことができます。You can then use the Assembly.GetType method to load types from the assembly. 参照 AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

区切り記号Delimiter 説明Meaning
円記号 (\)Backslash (\) エスケープ文字。Escape character.
バックティック (')Backtick (`) ジェネリック型の名前の末尾にある型パラメーターの数を表す1桁以上の数字に先行します。Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
角かっこ ([])Brackets ([]) 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
コンマ (,)Comma (,) アセンブリ名の前に指定します。Precedes the Assembly name.
ピリオド (.)Period (.) 名前空間識別子を表します。Denotes namespace identifiers.
正符号 (+)Plus sign (+) 入れ子になったクラスの前に置きます。Precedes a nested class.

たとえば、クラスの完全修飾名は次のようになります。For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

名前空間が topnamespace. Sub + 名前空間の場合、文字列は、入れ子の区切り記号として解釈されないように\、正符号 (+) の前にエスケープ文字 () を付ける必要があります。If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. リフレクションは、この文字列を次のように出力します。Reflection emits this string as follows:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly  

"+ +"\は "\++\\"になり、""は""\になります。A "++" becomes "\+\+", and a "\" becomes "\\".

この修飾名は永続化でき、 Type後でを読み込むために使用できます。This qualified name can be persisted and later used to load the Type. を検索して読み込むTypeには、型名のみを使用するか、アセンブリ修飾型名を指定してを使用GetTypeします。To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType型名を指定した場合は、 Type呼び出し元のアセンブリでを検索し、次にシステムアセンブリでを検索します。GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypeアセンブリ修飾型名を使用すると、任意Typeのアセンブリでが検索されます。GetType with the assembly qualified type name will look for the Type in any assembly.

型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字を含めることができます。Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. 末尾の文字を含まない型名を取得するt.GetElementType().ToString()tは、を使用します。は型です。To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

スペースは、アセンブリ名を除くすべての型名のコンポーネントに関連します。Spaces are relevant in all type name components except the assembly name. アセンブリ名では、', ' 区切り記号の前のスペースが関連しますが、', ' 区切り記号の後のスペースは無視されます。In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

ジェネリック型の名前は、バックティック (`) の後にジェネリック型引数の数を表す数字で終わります。The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. この名前の変形の目的は、同じスコープで発生する、同じ名前で型パラメーターの数が異なるジェネリック型をコンパイラがサポートできるようにすることです。The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. たとえばTuple、リフレクションは、ジェネリックメソッド\<T0, T1> Tuple<T> and Tuple(Of T) から、2 Visual Basic、または、およびの各タプルC#に含まれる、破損した名前1のタプルを返しTuple(Of T0, T1)ます。For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

ジェネリック型の場合、型引数リストは角かっこで囲まれ、型引数はコンマで区切られます。For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. たとえば、ジェネリックDictionary<TKey,TValue>には2つの型パラメーターがあります。For example, a generic Dictionary<TKey,TValue> has two type parameters. MyTypeDictionary<TKey,TValue> のキーを持つのは、次のように表されます。StringA Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

System.Collections.Generic.Dictionary`2[System.String,MyType]  

型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. それ以外の場合、アセンブリ修飾名の一部を区切るコンマは、追加の型引数の区切りとして解釈されます。Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. たとえば、型Dictionary<TKey,TValue> MyType のキーを含むfrommyassembly.dllのは、次のように指定することStringができます。For example, a Dictionary<TKey,TValue> of MyType fromMyAssembly.dll, with keys of type String, might be specified as follows:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")  

注意

アセンブリ修飾型は、型パラメーターリスト内に出現する場合にのみ、角かっこで囲むことができます。An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. 型パラメーターリスト内の修飾型および非修飾型のアセンブリを検索するための規則は、修飾された非修飾の非ジェネリック型の規則と同じです。The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Null 許容型は、ジェネリック型の特殊なケースです。Nullable types are a special case of generic types. たとえば、null 値がInt32許容されるは、"system. nullable ' 1 [system.string]" という文字列で表されます。For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

注意

、 C# C++、Visual Basic では、型演算子を使用して null 許容型を取得することもできます。In C#, C++, and Visual Basic you can also get nullable types using type operators. たとえば、のではBoolean 、によってtypeof(Nullable<bool>) null 許容型Nullable<Boolean>::typeidがC++返されますGetType(Nullable(Of Boolean)) 。また、Visual Basic では、によってが返さC#れます。For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

次の表は、さまざまな型にGetType対してで使用する構文を示しています。The following table shows the syntax you use with GetType for various types.

取得するにはTo Get 使用Use
Null 許容型Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
へのアンマネージポインター。MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
へのポインターへのアンマネージポインター。MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
マネージポインターまたはへの参照MyTypeA managed pointer or reference to MyType Type.GetType("MyType&")Type.GetType("MyType&"). ポインターとは異なり、参照は 1 つのレベルに制限されます。Note that unlike pointers, references are limited to one level.
親クラスと入れ子になったクラスA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
下限が0の1次元配列。A one-dimensional array with a lower bound of 0 Type.GetType("MyType[]")
不明な下限を持つ1次元配列。A one-dimensional array with an unknown lower bound Type.GetType("MyType[*]")
N 次元配列An n-dimensional array 角かっこ内のコンマ (,) は、合計 n-1 回です。A comma (,) inside the brackets a total of n-1 times. たとえば、 System.Object[,,]は3次元Object配列を表します。For example, System.Object[,,] represents a three-dimensional Object array.
1次元配列の配列。An array of one-dimensional arrays Type.GetType("MyType[][]")
下限が不明な四角形の2次元配列A rectangular two-dimensional array with unknown lower bounds Type.GetType("MyType[,]")
1つの型引数を持つジェネリック型A generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
2つの型引数を持つジェネリック型A generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
2つのアセンブリ修飾型引数を持つジェネリック型A generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型An assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
型引数が2つの型引数を持つジェネリック型であるジェネリック型。A generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

こちらもご覧ください

GetType(String, Boolean)

大文字と小文字を区別する検索を実行し、型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の Type を取得します。Gets the Type with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found.

public:
 static Type ^ GetType(System::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

取得する型のアセンブリ修飾名。The assembly-qualified name of the type to get. 以下を参照してください。AssemblyQualifiedNameSee AssemblyQualifiedName. 型が現在実行されているアセンブリ内または Mscorlib.dll にある場合は、名前空間で修飾された型名を提供するだけで十分です。If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

throwOnError
Boolean

型が見つからなかったときに例外をスローする場合はtruefalse を返す場合は nulltrue to throw an exception if the type cannot be found; false to return null. また、false を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。Specifying false also suppresses some other exception conditions, but not all of them. 「例外」を参照してください。See the Exceptions section.

戻り値

指定した名前を持つ型。The type with the specified name. 型が見つからない場合、throwOnError パラメーターで null を返すか例外をスローするかを指定します。If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. 一部の場合は、throwOnError の値に関係なく、例外がスローされます。In some cases, an exception is thrown regardless of the value of throwOnError. 「例外」を参照してください。See the Exceptions section.

例外

typeNamenull です。typeName is null.

クラス初期化子が呼び出され、例外をスローします。A class initializer is invoked and throws an exception.

throwOnErrortrue です。型が見つかりません。throwOnError is true and the type is not found.

- または --or- throwOnErrortrue です。 typeName に埋め込まれたタブなどの正しくない文字が含まれています。throwOnError is true and typeName contains invalid characters, such as an embedded tab. または-or- throwOnErrortrue です。 typeName は空の文字列です。throwOnError is true and typeName is an empty string.

- または --or- throwOnErrortrue です。 typeName は無効なサイズの配列型を表します。throwOnError is true and typeName represents an array type with an invalid size.

または-or- typeNameTypedReference の配列を表しています。typeName represents an array of TypedReference.

throwOnErrortrue で、 typeName に正しくない構文が含まれています。throwOnError is true and typeName contains invalid syntax. 例: "MyType[,*,]"。For example, "MyType[,*,]".

- または --or- typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- または --or- typeName は型引数の数が正しくないジェネリック型を表します。typeName represents a generic type that has an incorrect number of type arguments.

または-or- typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnErrortrue です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。throwOnError is true and the assembly or one of its dependencies was not found.

Windows ストア アプリ用 .NET またはポータブル クラス ライブラリでは、基本クラスの例外である IOException を代わりにキャッチします。In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。The assembly or one of its dependencies was found, but could not be loaded.

アセンブリまたはその依存関係のうちの 1 つが正しくありません。The assembly or one of its dependencies is not valid.

- または --or-

共通言語ランタイムの Version 2.0 以降を現在読み込み中です。またアセンブリは新しいバージョンでコンパイルされました。Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

次の例では、のSystem.Int32型を取得し、その型のFullNameオブジェクトをSystem.Int32使用して、のプロパティを表示します。The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32. 型オブジェクトが、存在しないアセンブリを参照している場合、この例では例外がスローされます。If a type object refers to an assembly that does not exist, this example throws an exception.

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
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わかっている場合Typeは、メソッドを使用して、別のアセンブリ内の型のオブジェクトを取得できます。 AssemblyQualifiedNameこの名前はから取得できます。You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypetypeName指定されたアセンブリの読み込みを発生させます。GetType causes loading of the assembly specified in typeName. また、 Assembly.Loadメソッドを使用してアセンブリを読み込み、メソッドまたはAssembly.GetTypesメソッドをType使用してオブジェクトを取得することもできます。 Assembly.GetTypeYou can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. コンパイル時にプログラムによって認識されるアセンブリに型がある場合は、 typeof C#またはGetType Visual Basic で演算子を使用する方が効率的です。If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

GetTypeは、ディスクから読み込まれたアセンブリに対してのみ機能します。GetType only works on assemblies loaded from disk. を呼び出しGetTypeて、 System.Reflection.Emitサービスを使用して定義された動的アセンブリで定義されている型を検索すると、一貫性のない動作が発生する可能性があります。If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. 動作は、動的アセンブリが永続的である (つまり、 RunAndSave System.Reflection.Emit.AssemblyBuilderAccess列挙体のアクセスモードまたSaveはアクセスモードを使用して作成される) かどうかによって異なります。The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. が呼び出される前にGetType動的アセンブリが永続的でディスクに書き込まれている場合、ローダーはディスク上に保存されているアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. が呼び出されたときGetTypeにアセンブリがディスクに保存されていない場合、メソッドはを返しnullます。If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeは、一時的な動的アセンブリを認識しません。そのため、 GetTypeを呼び出して、一時動的アセンブリ内の型nullを取得すると、が返されます。GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

動的モジュールGetTypeでを使用するには、 AppDomain.AssemblyResolveイベントをサブスクライブしGetType 、を保存する前にを呼び出します。To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. それ以外の場合は、メモリ内のアセンブリのコピーが2つ取得されます。Otherwise, you will get two copies of the assembly in memory.

パラメーター throwOnErrorは、型が見つからない場合の動作を指定します。また、「例外」セクションで説明されているように、他の特定の例外条件も抑制します。The throwOnError parameter specifies what happens when the type is not found, and also suppresses certain other exception conditions, as described in the Exceptions section. throwOnError値に関係なく、いくつかの例外がスローされます。Some exceptions are thrown regardless of the value of throwOnError. たとえば、型が見つかっても読み込むことができない場合、 TypeLoadExceptionfalseの場合throwOnErrorでも、がスローされます。For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

次の表は、型に対してリフレクションを行うときにGet 、メソッドによって返される基底クラスのメンバーを示しています。The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

メンバーの型Member Type スタティックStatic 非静的Non-Static
コンストラクターConstructor いいえNo いいえNo
フィールドField いいえNo はい。Yes. フィールドは、常に名前と署名で隠ぺいされます。A field is always hide-by-name-and-signature.
eventEvent 利用不可Not applicable 共通型システムの規則は、継承が、プロパティを実装するメソッドと同じであることを示します。The common type system rule is that the inheritance is the same as that of the methods that implement the property. リフレクションは、プロパティを名前で隠す、署名として扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ2を参照してください。See note 2 below.
メソッドMethod いいえNo はい。Yes. メソッド (仮想と非仮想の両方) は、非表示にするか、名前と署名を隠すことができます。A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
入れ子にされた型Nested Type いいえNo いいえNo
プロパティProperty 利用不可Not applicable 共通型システムの規則は、継承が、プロパティを実装するメソッドと同じであることを示します。The common type system rule is that the inheritance is the same as that of the methods that implement the property. リフレクションは、プロパティを名前で隠す、署名として扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ2を参照してください。See note 2 below.
  1. 名前による隠ぺいと署名では、カスタム修飾子、戻り値の型、パラメーターの型、sentinel、アンマネージ呼び出し規約を含む、シグネチャのすべての部分が考慮されます。Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. これは、バイナリ比較です。This is a binary comparison.

  2. リフレクションの場合、プロパティとイベントは、名前とシグネチャが隠ぺいされます。For reflection, properties and events are hide-by-name-and-signature. 基底クラスに get と set の両方のアクセサーを持つプロパティがあり、派生クラスに get アクセサーのみがある場合、派生クラスのプロパティは基底クラスのプロパティを非表示にします。基底クラスの setter にアクセスすることはできません。If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. カスタム属性は、共通型システムの一部ではありません。Custom attributes are not part of the common type system.

配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. 以下を参照してください。AssemblyQualifiedNameSee AssemblyQualifiedName.

typeName名前空間を含み、アセンブリ名を含まない場合、このメソッドは、呼び出し元のオブジェクトのアセンブリと mscorlib.dll だけをその順序で検索します。If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. TypeName が部分的または完全なアセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。If the assembly has a strong name, a complete assembly name is required.

プロパティAssemblyQualifiedNameは、入れ子にされた型、アセンブリ名、およびジェネリック引数を含む完全修飾型名を返します。The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic arguments. 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの簡易名を出力します。リフレクションは、次の規則に従って、クエリを実行すると、破損した名前を生成します。All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

注意

.NET Framework バージョン2.0 では、プロセッサアーキテクチャがアセンブリ id に追加され、アセンブリ名文字列の一部として指定できるようになりました。In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. たとえば、"ProcessorArchitecture = msil" のようになります。For example, "ProcessorArchitecture=msil". ただし、互換性上の理由から、 AssemblyQualifiedNameプロパティによって返される文字列には含まれません。However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. AssemblyNameオブジェクトを作成し、 Loadメソッドの適切なオーバーロードに渡すことで、型を読み込むこともできます。You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. その後、 Assembly.GetTypeメソッドを使用して、アセンブリから型を読み込むことができます。You can then use the Assembly.GetType method to load types from the assembly. 参照 AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

区切り記号Delimiter 説明Meaning
円記号 (\)Backslash (\) エスケープ文字。Escape character.
バックティック (')Backtick (`) ジェネリック型の名前の末尾にある型パラメーターの数を表す1桁以上の数字に先行します。Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
角かっこ ([])Brackets ([]) 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
コンマ (,)Comma (,) アセンブリ名の前に指定します。Precedes the Assembly name.
ピリオド (.)Period (.) 名前空間識別子を表します。Denotes namespace identifiers.
正符号 (+)Plus sign (+) 入れ子になったクラスの前に置きます。Precedes a nested class.

たとえば、クラスの完全修飾名は次のようになります。For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

名前空間が topnamespace. Sub + 名前空間の場合、文字列は、入れ子の区切り記号として解釈されないように\、正符号 (+) の前にエスケープ文字 () を付ける必要があります。If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. リフレクションは、この文字列を次のように出力します。Reflection emits this string as follows:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly  

"+ +"\は "\++\\"になり、""は""\になります。A "++" becomes "\+\+", and a "\" becomes "\\".

この修飾名は永続化でき、 Type後でを読み込むために使用できます。This qualified name can be persisted and later used to load the Type. を検索して読み込むTypeには、型名のみを使用するか、アセンブリ修飾型名を指定してを使用GetTypeします。To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType型名を指定した場合は、 Type呼び出し元のアセンブリでを検索し、次にシステムアセンブリでを検索します。GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypeアセンブリ修飾型名を使用すると、任意Typeのアセンブリでが検索されます。GetType with the assembly qualified type name will look for the Type in any assembly.

型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字を含めることができます。Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. 末尾の文字を含まない型名を取得するt.GetElementType().ToString()tは、を使用します。は型です。To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

スペースは、アセンブリ名を除くすべての型名のコンポーネントに関連します。Spaces are relevant in all type name components except the assembly name. アセンブリ名では、', ' 区切り記号の前のスペースが関連しますが、', ' 区切り記号の後のスペースは無視されます。In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

ジェネリック型の名前は、バックティック (`) の後にジェネリック型引数の数を表す数字で終わります。The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. この名前の変形の目的は、同じスコープで発生する、同じ名前で型パラメーターの数が異なるジェネリック型をコンパイラがサポートできるようにすることです。The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. たとえばTuple、リフレクションは、ジェネリックメソッド\<T0, T1> Tuple<T> and Tuple(Of T) から、2 Visual Basic、または、およびの各タプルC#に含まれる、破損した名前1のタプルを返しTuple(Of T0, T1)ます。For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

ジェネリック型の場合、型引数リストは角かっこで囲まれ、型引数はコンマで区切られます。For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. たとえば、ジェネリックDictionary<TKey,TValue>には2つの型パラメーターがあります。For example, a generic Dictionary<TKey,TValue> has two type parameters. MyTypeDictionary<TKey,TValue> のキーを持つのは、次のように表されます。StringA Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

System.Collections.Generic.Dictionary`2[System.String,MyType]  

型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. それ以外の場合、アセンブリ修飾名の一部を区切るコンマは、追加の型引数の区切りとして解釈されます。Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. たとえばDictionary<TKey,TValue> 、次のようMyTypeに、型Stringのキーが指定されたのを MyAssembly からに指定することができます。For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")  

注意

アセンブリ修飾型は、型パラメーターリスト内に出現する場合にのみ、角かっこで囲むことができます。An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. 型パラメーターリスト内の修飾型および非修飾型のアセンブリを検索するための規則は、修飾された非修飾の非ジェネリック型の規則と同じです。The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Null 許容型は、ジェネリック型の特殊なケースです。Nullable types are a special case of generic types. たとえば、null 値がInt32許容されるは、"system. nullable ' 1 [system.string]" という文字列で表されます。For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

注意

、 C# C++、Visual Basic では、型演算子を使用して null 許容型を取得することもできます。In C#, C++, and Visual Basic you can also get nullable types using type operators. たとえば、のではBoolean 、によってtypeof(Nullable<bool>) null 許容型Nullable<Boolean>::typeidがC++返されますGetType(Nullable(Of Boolean)) 。また、Visual Basic では、によってが返さC#れます。For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

次の表は、さまざまな型にGetType対してで使用する構文を示しています。The following table shows the syntax you use with GetType for various types.

取得するにはTo Get 使用Use
Null 許容型Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
へのアンマネージポインター。MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
へのポインターへのアンマネージポインター。MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
マネージポインターまたはへの参照MyTypeA managed pointer or reference to MyType Type.GetType("MyType&")Type.GetType("MyType&"). ポインターとは異なり、参照は 1 つのレベルに制限されます。Note that unlike pointers, references are limited to one level.
親クラスと入れ子になったクラスA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
下限が0の1次元配列。A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
不明な下限を持つ1次元配列。A one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
N 次元配列An n-dimensional array 角かっこ内のコンマ (,) は、合計 n-1 回です。A comma (,) inside the brackets a total of n-1 times. たとえば、 System.Object[,,]は3次元Object配列を表します。For example, System.Object[,,] represents a three-dimensional Object array.
2次元配列の配列。A two-dimensional array's array Type.GetType("MyArray[][]")
下限が不明な四角形の2次元配列A rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
1つの型引数を持つジェネリック型A generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
2つの型引数を持つジェネリック型A generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
2つのアセンブリ修飾型引数を持つジェネリック型A generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型An assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
型引数が2つの型引数を持つジェネリック型であるジェネリック型。A generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

こちらもご覧ください

GetType(String, Boolean, Boolean)

指定した名前を持つ Type を取得します。型が見つからない場合に例外をスローするかどうかと、大文字と小文字を区別する検索を実行するかどうかも指定します。Gets the Type with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search.

public:
 static Type ^ GetType(System::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

取得する型のアセンブリ修飾名。The assembly-qualified name of the type to get. 以下を参照してください。AssemblyQualifiedNameSee AssemblyQualifiedName. 型が現在実行されているアセンブリ内または Mscorlib.dll にある場合は、名前空間で修飾された型名を提供するだけで十分です。If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

throwOnError
Boolean

型が見つからなかったときに例外をスローする場合はtruefalse を返す場合は nulltrue to throw an exception if the type cannot be found; false to return null. また、false を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。Specifying false also suppresses some other exception conditions, but not all of them. 「例外」を参照してください。See the Exceptions section.

ignoreCase
Boolean

大文字と小文字を区別せずに true の検索を実行するには typeName。大文字と小文字を区別して false の検索を実行するには typeNametrue to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

戻り値

指定した名前を持つ型。The type with the specified name. 型が見つからない場合、throwOnError パラメーターで null を返すか例外をスローするかを指定します。If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. 一部の場合は、throwOnError の値に関係なく、例外がスローされます。In some cases, an exception is thrown regardless of the value of throwOnError. 「例外」を参照してください。See the Exceptions section.

例外

typeNamenull です。typeName is null.

クラス初期化子が呼び出され、例外をスローします。A class initializer is invoked and throws an exception.

throwOnErrortrue です。型が見つかりません。throwOnError is true and the type is not found.

または-or- throwOnErrortrue です。 typeName に埋め込まれたタブなどの正しくない文字が含まれています。throwOnError is true and typeName contains invalid characters, such as an embedded tab. - または --or- throwOnErrortrue です。 typeName は空の文字列です。throwOnError is true and typeName is an empty string.

または-or- throwOnErrortrue です。 typeName は無効なサイズの配列型を表します。throwOnError is true and typeName represents an array type with an invalid size.

- または --or- typeNameTypedReference の配列を表しています。typeName represents an array of TypedReference.

throwOnErrortrue で、 typeName に正しくない構文が含まれています。throwOnError is true and typeName contains invalid syntax. 例: "MyType[,*,]"。For example, "MyType[,*,]".

- または --or- typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

または-or- typeName は型引数の数が正しくないジェネリック型を表します。typeName represents a generic type that has an incorrect number of type arguments.

または-or- typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnErrortrue です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。throwOnError is true and the assembly or one of its dependencies was not found.

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。The assembly or one of its dependencies was found, but could not be loaded.

アセンブリまたはその依存関係のうちの 1 つが正しくありません。The assembly or one of its dependencies is not valid.

- または --or-

共通言語ランタイムの Version 2.0 以降を現在読み込み中です。またアセンブリは新しいバージョンでコンパイルされました。Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

注釈

アセンブリ修飾名がGetTypeわかっている場合Typeは、メソッドを使用して、別のアセンブリ内の型のオブジェクトを取得できます。 AssemblyQualifiedNameこの名前はから取得できます。You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypetypeName指定されたアセンブリの読み込みを発生させます。GetType causes loading of the assembly specified in typeName. また、 Assembly.Loadメソッドを使用してアセンブリを読み込み、メソッドまたはAssembly.GetTypesメソッドをType使用してオブジェクトを取得することもできます。 Assembly.GetTypeYou can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. コンパイル時にプログラムによって認識されるアセンブリに型がある場合は、 typeof C#またはGetType Visual Basic で演算子を使用する方が効率的です。If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

GetTypeは、ディスクから読み込まれたアセンブリに対してのみ機能します。GetType only works on assemblies loaded from disk. を呼び出しGetTypeて、 System.Reflection.Emitサービスを使用して定義された動的アセンブリで定義されている型を検索すると、一貫性のない動作が発生する可能性があります。If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. 動作は、動的アセンブリが永続的である (つまり、 RunAndSave System.Reflection.Emit.AssemblyBuilderAccess列挙体のアクセスモードまたSaveはアクセスモードを使用して作成される) かどうかによって異なります。The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. が呼び出される前にGetType動的アセンブリが永続的でディスクに書き込まれている場合、ローダーはディスク上に保存されているアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. が呼び出されたときGetTypeにアセンブリがディスクに保存されていない場合、メソッドはを返しnullます。If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeは、一時的な動的アセンブリを認識しません。そのため、 GetTypeを呼び出して、一時動的アセンブリ内の型nullを取得すると、が返されます。GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

動的モジュールGetTypeでを使用するには、 AppDomain.AssemblyResolveイベントをサブスクライブしGetType 、を保存する前にを呼び出します。To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. それ以外の場合は、メモリ内のアセンブリのコピーが2つ取得されます。Otherwise, you will get two copies of the assembly in memory.

パラメーター throwOnErrorは、型が見つからない場合の動作を指定します。また、「例外」セクションで説明されているように、他の特定の例外条件も抑制します。The throwOnError parameter specifies what happens when the type is not found, and also suppresses certain other exception conditions, as described in the Exceptions section. throwOnError値に関係なく、いくつかの例外がスローされます。Some exceptions are thrown regardless of the value of throwOnError. たとえば、型が見つかっても読み込むことができない場合、 TypeLoadExceptionfalseの場合throwOnErrorでも、がスローされます。For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

次の表は、型に対してリフレクションを行うときにGet 、メソッドによって返される基底クラスのメンバーを示しています。The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

メンバーの型Member Type スタティックStatic 非静的Non-Static
コンストラクターConstructor いいえNo いいえNo
フィールドField いいえNo はい。Yes. フィールドは、常に名前と署名で隠ぺいされます。A field is always hide-by-name-and-signature.
eventEvent 利用不可Not applicable 共通型システムの規則は、継承が、プロパティを実装するメソッドと同じであることを示します。The common type system rule is that the inheritance is the same as that of the methods that implement the property. リフレクションは、プロパティを名前で隠す、署名として扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ2を参照してください。See note 2 below.
メソッドMethod いいえNo はい。Yes. メソッド (仮想と非仮想の両方) は、非表示にするか、名前と署名を隠すことができます。A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
入れ子にされた型Nested Type いいえNo いいえNo
プロパティProperty 利用不可Not applicable 共通型システムの規則は、継承が、プロパティを実装するメソッドと同じであることを示します。The common type system rule is that the inheritance is the same as that of the methods that implement the property. リフレクションは、プロパティを名前で隠す、署名として扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ2を参照してください。See note 2 below.
  1. 名前による隠ぺいと署名では、カスタム修飾子、戻り値の型、パラメーターの型、sentinel、アンマネージ呼び出し規約を含む、シグネチャのすべての部分が考慮されます。Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. これは、バイナリ比較です。This is a binary comparison.

  2. リフレクションの場合、プロパティとイベントは、名前とシグネチャが隠ぺいされます。For reflection, properties and events are hide-by-name-and-signature. 基底クラスに get と set の両方のアクセサーを持つプロパティがあり、派生クラスに get アクセサーのみがある場合、派生クラスのプロパティは基底クラスのプロパティを非表示にします。基底クラスの setter にアクセスすることはできません。If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. カスタム属性は、共通型システムの一部ではありません。Custom attributes are not part of the common type system.

配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. 以下を参照してください。AssemblyQualifiedNameSee AssemblyQualifiedName.

typeName名前空間を含み、アセンブリ名を含まない場合、このメソッドは、呼び出し元のオブジェクトのアセンブリと mscorlib.dll だけをその順序で検索します。If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. TypeName が部分的または完全なアセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。If the assembly has a strong name, a complete assembly name is required.

プロパティAssemblyQualifiedNameは、入れ子にされた型、アセンブリ名、および型引数を含む完全修飾型名を返します。The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and type arguments. 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの簡易名を出力します。リフレクションは、次の規則に従って、クエリを実行すると、破損した名前を生成します。All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

注意

.NET Framework バージョン2.0 では、プロセッサアーキテクチャがアセンブリ id に追加され、アセンブリ名文字列の一部として指定できるようになりました。In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. たとえば、"ProcessorArchitecture = msil" のようになります。For example, "ProcessorArchitecture=msil". ただし、互換性上の理由から、 AssemblyQualifiedNameプロパティによって返される文字列には含まれません。However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. AssemblyNameオブジェクトを作成し、 Loadメソッドの適切なオーバーロードに渡すことで、型を読み込むこともできます。You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. その後、 Assembly.GetTypeメソッドを使用して、アセンブリから型を読み込むことができます。You can then use the Assembly.GetType method to load types from the assembly. 参照 AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

区切り記号Delimiter 説明Meaning
円記号 (\)Backslash (\) エスケープ文字。Escape character.
バックティック (')Backtick (`) ジェネリック型の名前の末尾にある型パラメーターの数を表す1桁以上の数字に先行します。Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
角かっこ ([])Brackets ([]) 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
コンマ (,)Comma (,) アセンブリ名の前に指定します。Precedes the Assembly name.
ピリオド (.)Period (.) 名前空間識別子を表します。Denotes namespace identifiers.
正符号 (+)Plus sign (+) 入れ子になったクラスの前に置きます。Precedes a nested class.

たとえば、クラスの完全修飾名は次のようになります。For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

名前空間が topnamespace. Sub + 名前空間の場合、文字列は、入れ子の区切り記号として解釈されないように\、正符号 (+) の前にエスケープ文字 () を付ける必要があります。If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. リフレクションは、この文字列を次のように出力します。Reflection emits this string as follows:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly  

"+ +"\は "\++\\"になり、""は""\になります。A "++" becomes "\+\+", and a "\" becomes "\\".

この修飾名は永続化でき、 Type後でを読み込むために使用できます。This qualified name can be persisted and later used to load the Type. を検索して読み込むTypeには、型名のみを使用するか、アセンブリ修飾型名を指定してを使用GetTypeします。To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType型名を指定した場合は、 Type呼び出し元のアセンブリでを検索し、次にシステムアセンブリでを検索します。GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypeアセンブリ修飾型名を使用すると、任意Typeのアセンブリでが検索されます。GetType with the assembly qualified type name will look for the Type in any assembly.

型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字を含めることができます。Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. 末尾の文字を含まない型名を取得するt.GetElementType().ToString()tは、を使用します。は型です。To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

スペースは、アセンブリ名を除くすべての型名のコンポーネントに関連します。Spaces are relevant in all type name components except the assembly name. アセンブリ名では、', ' 区切り記号の前のスペースが関連しますが、', ' 区切り記号の後のスペースは無視されます。In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

ジェネリック型の名前は、バックティック (`) の後にジェネリック型引数の数を表す数字で終わります。The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. この名前の変形の目的は、同じスコープで発生する、同じ名前で型パラメーターの数が異なるジェネリック型をコンパイラがサポートできるようにすることです。The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. たとえばTuple、リフレクションは、ジェネリックメソッド\<T0, T1> Tuple<T> and Tuple(Of T) から、2 Visual Basic、または、およびの各タプルC#に含まれる、破損した名前1のタプルを返しTuple(Of T0, T1)ます。For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

ジェネリック型の場合、型引数リストは角かっこで囲まれ、型引数はコンマで区切られます。For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. たとえば、ジェネリックDictionary<TKey,TValue>には2つの型パラメーターがあります。For example, a generic Dictionary<TKey,TValue> has two type parameters. MyTypeDictionary<TKey,TValue> のキーを持つのは、次のように表されます。StringA Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

System.Collections.Generic.Dictionary`2[System.String,MyType]  

型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. それ以外の場合、アセンブリ修飾名の一部を区切るコンマは、追加の型引数の区切りとして解釈されます。Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. たとえばDictionary<TKey,TValue> 、次のようMyTypeに、型Stringのキーが指定されたのを MyAssembly からに指定することができます。For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")  

注意

アセンブリ修飾型は、型パラメーターリスト内に出現する場合にのみ、角かっこで囲むことができます。An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. 型パラメーターリスト内の修飾型および非修飾型のアセンブリを検索するための規則は、修飾された非修飾の非ジェネリック型の規則と同じです。The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Null 許容型は、ジェネリック型の特殊なケースです。Nullable types are a special case of generic types. たとえば、null 値がInt32許容されるは、"system. nullable ' 1 [system.string]" という文字列で表されます。For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

注意

、 C# C++、Visual Basic では、型演算子を使用して null 許容型を取得することもできます。In C#, C++, and Visual Basic you can also get nullable types using type operators. たとえば、のではBoolean 、によってtypeof(Nullable<bool>) null 許容型Nullable<Boolean>::typeidがC++返されますGetType(Nullable(Of Boolean)) 。また、Visual Basic では、によってが返さC#れます。For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

次の表は、さまざまな型にGetType対してで使用する構文を示しています。The following table shows the syntax you use with GetType for various types.

取得するにはTo Get 使用Use
Null 許容型Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
へのアンマネージポインター。MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
へのポインターへのアンマネージポインター。MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
マネージポインターまたはへの参照MyTypeA managed pointer or reference to MyType Type.GetType("MyType&")Type.GetType("MyType&"). ポインターとは異なり、参照は 1 つのレベルに制限されます。Note that unlike pointers, references are limited to one level.
親クラスと入れ子になったクラスA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
下限が0の1次元配列。A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
不明な下限を持つ1次元配列。A one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
N 次元配列An n-dimensional array 角かっこ内のコンマ (,) は、合計 n-1 回です。A comma (,) inside the brackets a total of n-1 times. たとえば、 System.Object[,,]は3次元Object配列を表します。For example, System.Object[,,] represents a three-dimensional Object array.
2次元配列の配列。A two-dimensional array's array Type.GetType("MyArray[][]")
下限が不明な四角形の2次元配列A rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
1つの型引数を持つジェネリック型A generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
2つの型引数を持つジェネリック型A generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
2つのアセンブリ修飾型引数を持つジェネリック型A generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型An assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
型引数が2つの型引数を持つジェネリック型であるジェネリック型。A generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

こちらもご覧ください

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

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);
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

取得する型の名前。The name of the type to get. typeResolver パラメーターを指定する場合は、typeResolver が解決できる任意の文字列を型名として使用できます。If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. assemblyResolver パラメーターを指定する場合、または標準の型解決を使用する場合は、typeName をアセンブリ修飾名にする必要があります (AssemblyQualifiedNameを参照)。ただし、現在実行されているアセンブリ内または Mscorlib.dll に型がある場合は、名前空間で修飾された型名を指定するだけで十分です。If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

で指定されたアセンブリを特定して返すメソッドtypeName.A method that locates and returns the assembly that is specified in typeName. assemblyResolver には、アセンブリ名が AssemblyName オブジェクトとして渡されます。The assembly name is passed to assemblyResolver as an AssemblyName object. typeName にアセンブリの名前が含まれていない場合、assemblyResolver は呼び出されません。If typeName does not contain the name of an assembly, assemblyResolver is not called. assemblyResolver を指定しない場合は、標準のアセンブリ解決が実行されます。If assemblyResolver is not supplied, standard assembly resolution is performed.

注意   不明な呼び出し元や信頼関係のない呼び出し元からのメソッドは渡さないようにしてください。Caution Do not pass methods from unknown or untrusted callers. 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。Doing so could result in elevation of privilege for malicious code. 指定したメソッドまたは使い慣れているメソッドだけを使用してください。Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

typeName で指定された型を、assemblyResolver または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. アセンブリが指定されていない場合は、typeResolver メソッドで指定できます。If no assembly is provided, the typeResolver method can provide one. このメソッドは、大文字と小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには false が渡されます。The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

注意   不明な呼び出し元や信頼関係のない呼び出し元からのメソッドは渡さないようにしてください。Caution Do not pass methods from unknown or untrusted callers.

戻り値

指定された名前の型。型が見つからない場合は nullThe type with the specified name, or null if the type is not found.

例外

typeNamenull です。typeName is null.

クラス初期化子が呼び出され、例外をスローします。A class initializer is invoked and throws an exception.

typeName が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

または-or- typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

または-or- typeName は型引数の数が正しくないジェネリック型を表します。typeName represents a generic type that has an incorrect number of type arguments.

- または --or- typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeNameTypedReference の配列を表しています。typeName represents an array of TypedReference.

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。The assembly or one of its dependencies was found, but could not be loaded.

または-or- typeName に無効なアセンブリ名が含まれています。typeName contains an invalid assembly name.

- または --or- typeName が、型名のない有効なアセンブリ名です。typeName is a valid assembly name without a type name.

アセンブリまたはその依存関係のうちの 1 つが正しくありません。The assembly or one of its dependencies is not valid.

- または --or-

現在読み込まれているバージョンよりも新しいバージョンの共通言語ランタイムで、アセンブリがコンパイルされました。The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

注釈

このメソッドの使用シナリオと、パラメーターとassemblyResolver typeResolverパラメーターの詳細についてはGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) 、メソッドのオーバーロードに関する説明を参照してください。Usage scenarios for this method and details about the assemblyResolver and typeResolver parameters can be found in the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload.

注意

typeName見つからない場合、メソッドのGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)呼び出しはを返しnullます。If typeName cannot be found, the call to the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) method returns null. 例外はスローされません。It does not throw an exception. 例外がスローされるかどうかを制御するにはGetType 、パラメーターをthrowOnError持つメソッドのオーバーロードを呼び出します。To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

このメソッドのオーバーロードを呼び出すことは、 GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)メソッドのオーバーロードをfalse呼び出し、 throwOnErrorパラメーター ignoreCaseとパラメーターにを指定することと同じです。Calling this method overload is the same as calling the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload and specifying false for the throwOnError and ignoreCase parameters.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。Gets the type with the specified name, specifying whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

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);
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

取得する型の名前。The name of the type to get. typeResolver パラメーターを指定する場合は、typeResolver が解決できる任意の文字列を型名として使用できます。If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. assemblyResolver パラメーターを指定する場合、または標準の型解決を使用する場合は、typeName をアセンブリ修飾名にする必要があります (AssemblyQualifiedNameを参照)。ただし、現在実行されているアセンブリ内または Mscorlib.dll に型がある場合は、名前空間で修飾された型名を指定するだけで十分です。If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

で指定されたアセンブリを特定して返すメソッドtypeName.A method that locates and returns the assembly that is specified in typeName. assemblyResolver には、アセンブリ名が AssemblyName オブジェクトとして渡されます。The assembly name is passed to assemblyResolver as an AssemblyName object. typeName にアセンブリの名前が含まれていない場合、assemblyResolver は呼び出されません。If typeName does not contain the name of an assembly, assemblyResolver is not called. assemblyResolver を指定しない場合は、標準のアセンブリ解決が実行されます。If assemblyResolver is not supplied, standard assembly resolution is performed.

注意   不明な呼び出し元や信頼関係のない呼び出し元からのメソッドは渡さないようにしてください。Caution Do not pass methods from unknown or untrusted callers. 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。Doing so could result in elevation of privilege for malicious code. 指定したメソッドまたは使い慣れているメソッドだけを使用してください。Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

typeName で指定された型を、assemblyResolver または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. アセンブリが指定されていない場合は、このメソッドで指定できます。If no assembly is provided, the method can provide one. このメソッドは、大文字と小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには false が渡されます。The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

注意   不明な呼び出し元や信頼関係のない呼び出し元からのメソッドは渡さないようにしてください。Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean

型が見つからなかったときに例外をスローする場合は truefalse を返す場合は nulltrue to throw an exception if the type cannot be found; false to return null. また、false を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。Specifying false also suppresses some other exception conditions, but not all of them. 「例外」を参照してください。See the Exceptions section.

戻り値

指定した名前を持つ型。The type with the specified name. 型が見つからない場合、throwOnError パラメーターで null を返すか例外をスローするかを指定します。If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. 一部の場合は、throwOnError の値に関係なく、例外がスローされます。In some cases, an exception is thrown regardless of the value of throwOnError. 「例外」を参照してください。See the Exceptions section.

例外

typeNamenull です。typeName is null.

クラス初期化子が呼び出され、例外をスローします。A class initializer is invoked and throws an exception.

throwOnErrortrue です。型が見つかりません。throwOnError is true and the type is not found.

または-or- throwOnErrortrue です。 typeName に埋め込まれたタブなどの正しくない文字が含まれています。throwOnError is true and typeName contains invalid characters, such as an embedded tab. または-or- throwOnErrortrue です。 typeName は空の文字列です。throwOnError is true and typeName is an empty string.

- または --or- throwOnErrortrue です。 typeName は無効なサイズの配列型を表します。throwOnError is true and typeName represents an array type with an invalid size.

- または --or- typeNameTypedReference の配列を表しています。typeName represents an array of TypedReference.

typeName が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

- または --or- throwOnErrortrue です。typeName に無効な構文 ("MyType[,*,]" など) が含まれています。throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

または-or- typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- または --or- typeName は型引数の数が正しくないジェネリック型を表します。typeName represents a generic type that has an incorrect number of type arguments.

または-or- typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnErrortrue です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。throwOnError is true and the assembly or one of its dependencies was not found.

または-or- typeName に無効なアセンブリ名が含まれています。typeName contains an invalid assembly name.

- または --or- typeName が、型名のない有効なアセンブリ名です。typeName is a valid assembly name without a type name.

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。The assembly or one of its dependencies was found, but could not be loaded.

アセンブリまたはその依存関係のうちの 1 つが正しくありません。The assembly or one of its dependencies is not valid.

- または --or-

現在読み込まれているバージョンよりも新しいバージョンの共通言語ランタイムで、アセンブリがコンパイルされました。The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

注釈

このメソッドの使用シナリオと、パラメーターとassemblyResolver typeResolverパラメーターの詳細についてはGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) 、メソッドのオーバーロードに関する説明を参照してください。Usage scenarios for this method and details about the assemblyResolver and typeResolver parameters can be found in the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload.

このメソッドオーバーロードの呼び出しは、 GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)メソッドオーバーロードを呼び出し、 ignoreCaseパラメーターにfalseを指定することと同じです。Calling this method overload is the same as calling the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload and specifying false for the ignoreCase parameter.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

大文字と小文字を区別せずに検索を実行するかどうか、および型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。Gets the type with the specified name, specifying whether to perform a case-sensitive search and whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

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);
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

取得する型の名前。The name of the type to get. typeResolver パラメーターを指定する場合は、typeResolver が解決できる任意の文字列を型名として使用できます。If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. assemblyResolver パラメーターを指定する場合、または標準の型解決を使用する場合は、typeName をアセンブリ修飾名にする必要があります (AssemblyQualifiedNameを参照)。ただし、現在実行されているアセンブリ内または Mscorlib.dll に型がある場合は、名前空間で修飾された型名を指定するだけで十分です。If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

で指定されたアセンブリを特定して返すメソッドtypeName.A method that locates and returns the assembly that is specified in typeName. assemblyResolver には、アセンブリ名が AssemblyName オブジェクトとして渡されます。The assembly name is passed to assemblyResolver as an AssemblyName object. typeName にアセンブリの名前が含まれていない場合、assemblyResolver は呼び出されません。If typeName does not contain the name of an assembly, assemblyResolver is not called. assemblyResolver を指定しない場合は、標準のアセンブリ解決が実行されます。If assemblyResolver is not supplied, standard assembly resolution is performed.

注意   不明な呼び出し元や信頼関係のない呼び出し元からのメソッドは渡さないようにしてください。Caution Do not pass methods from unknown or untrusted callers. 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。Doing so could result in elevation of privilege for malicious code. 指定したメソッドまたは使い慣れているメソッドだけを使用してください。Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

typeName で指定された型を、assemblyResolver または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. アセンブリが指定されていない場合は、このメソッドで指定できます。If no assembly is provided, the method can provide one. このメソッドは、大文字小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには、ignoreCase の値が渡されます。The method also takes a parameter that specifies whether to perform a case-insensitive search; the value of ignoreCase is passed to that parameter.

注意   不明な呼び出し元や信頼関係のない呼び出し元からのメソッドは渡さないようにしてください。Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean

型が見つからなかったときに例外をスローする場合は truefalse を返す場合は nulltrue to throw an exception if the type cannot be found; false to return null. また、false を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。Specifying false also suppresses some other exception conditions, but not all of them. 「例外」を参照してください。See the Exceptions section.

ignoreCase
Boolean

大文字と小文字を区別せずに true の検索を実行するには typeName。大文字と小文字を区別して false の検索を実行するには typeNametrue to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

戻り値

指定した名前を持つ型。The type with the specified name. 型が見つからない場合、throwOnError パラメーターで null を返すか例外をスローするかを指定します。If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. 一部の場合は、throwOnError の値に関係なく、例外がスローされます。In some cases, an exception is thrown regardless of the value of throwOnError. 「例外」を参照してください。See the Exceptions section.

例外

typeNamenullです。typeName is null.

クラス初期化子が呼び出され、例外をスローします。A class initializer is invoked and throws an exception.

throwOnErrortrue です。型が見つかりません。throwOnError is true and the type is not found.

または-or- throwOnErrortrue です。 typeName に埋め込まれたタブなどの正しくない文字が含まれています。throwOnError is true and typeName contains invalid characters, such as an embedded tab. - または --or- throwOnErrortrue です。 typeName は空の文字列です。throwOnError is true and typeName is an empty string.

または-or- throwOnErrortrue です。 typeName は無効なサイズの配列型を表します。throwOnError is true and typeName represents an array type with an invalid size.

- または --or- typeNameTypedReference の配列を表しています。typeName represents an array of TypedReference.

typeName が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

- または --or- throwOnErrortrue です。typeName に無効な構文 ("MyType[,*,]" など) が含まれています。throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

または-or- typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- または --or- typeName は型引数の数が正しくないジェネリック型を表します。typeName represents a generic type that has an incorrect number of type arguments.

または-or- typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnErrortrue です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。throwOnError is true and the assembly or one of its dependencies was not found.

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。The assembly or one of its dependencies was found, but could not be loaded.

または-or- typeName に無効なアセンブリ名が含まれています。typeName contains an invalid assembly name.

または-or- typeName が、型名のない有効なアセンブリ名です。typeName is a valid assembly name without a type name.

アセンブリまたはその依存関係のうちの 1 つが正しくありません。The assembly or one of its dependencies is not valid.

または-or-

現在読み込まれているバージョンよりも新しいバージョンの共通言語ランタイムで、アセンブリがコンパイルされました。The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

注釈

このメソッドオーバーロードとそれに関連付けらGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)ているオーバーロード (および) を使用GetTypeして、メソッドの既定の実装をより柔軟な実装に置き換えます。Use this method overload and its associated overloads (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) and GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) to replace the default implementation of the GetType method with more flexible implementations. 型名とそれらを含むアセンブリの名前を解決する独自のメソッドを提供することで、次の操作を実行できます。By providing your own methods that resolve type names and the names of the assemblies that contain them, you can do the following:

  • 型の読み込み元のアセンブリのバージョンを制御します。Control which version of an assembly a type is loaded from.

  • アセンブリ名を含まない型名を検索する別の場所を指定します。Provide another place to look for a type name that does not include an assembly name.

  • 部分的なアセンブリ名を使用してアセンブリを読み込みます。Load assemblies using partial assembly names.

  • 共通言語ランタイムSystem.Type (CLR) によって作成されていないのサブクラスを返します。Return subclasses of System.Type that are not created by the common language runtime (CLR).

たとえば、バージョントレラントなシリアル化では、このメソッドを使用すると、部分名を使用して "最適" アセンブリを検索できます。For example, in version-tolerant serialization this method enables you to search for a "best fit" assembly by using a partial name. GetTypeメソッドの他のオーバーロードには、アセンブリ修飾型名が必要です。これにはバージョン番号が含まれます。Other overloads of the GetType method require an assembly-qualified type name, which includes the version number.

型システムの代替実装では、CLR によってSystem.Type作成されていないのサブクラスを返すことが必要になる場合がGetTypeあります。メソッドの他のオーバーロードによって返されるすべての型は、ランタイム型です。Alternate implementations of the type system may need to return subclasses of System.Type that are not created by the CLR; all types that are returned by other overloads of the GetType method are runtime types.

使用に関する注意事項Usage Notes

このメソッドオーバーロードとそれに関連付けtypeNameられているオーバーロードは、型の名前とアセンブリの名前を解析し、名前を解決します。This method overload and its associated overloads parse typeName into the name of a type and the name of an assembly, and then resolve the names. アセンブリ名の解決は、アセンブリのコンテキストで型名を解決する必要があるため、型名の解決の前に発生します。Resolution of the assembly name occurs before resolution of the type name, because a type name must be resolved in the context of an assembly.

注意

アセンブリ修飾型名の概念に慣れていない場合は、 AssemblyQualifiedNameプロパティを参照してください。If you are unfamiliar with the concept of assembly-qualified type names, see the AssemblyQualifiedName property.

typeNameアセンブリ修飾名でない場合、アセンブリ解決はスキップされます。If typeName is not an assembly-qualified name, assembly resolution is skipped. 修飾されていない型名は mscorlib.dll または現在実行中のアセンブリのコンテキストで解決できます。また、必要にtypeResolver応じてパラメーターにアセンブリを指定することもできます。Unqualified type names can be resolved in the context of Mscorlib.dll or the currently executing assembly, or you can optionally provide an assembly in the typeResolver parameter. さまざまな種類の名前解決にアセンブリ名を含めたり省略したりした場合の効果は、[混合名の解決] セクションにテーブルとして表示されます。The effects of including or omitting the assembly name for different kinds of name resolution are displayed as a table in the Mixed Name Resolution section.

一般的な使用に関する注意事項:General usage notes:

  • メソッドをに渡したりassemblyResolvertypeResolver不明または信頼されていない呼び出し元から取得したりすることはできません。Do not pass methods to assemblyResolver or typeResolver if they come from unknown or untrusted callers. 指定したメソッドまたは使い慣れているメソッドだけを使用してください。Use only methods that you provide or that you are familiar with.

    注意事項

    不明または信頼されていない呼び出し元のメソッドを使用すると、悪意のあるコードの特権が昇格される可能性があります。Using methods from unknown or untrusted callers could result in elevation of privilege for malicious code.

  • パラメーターまたはtypeResolverパラメーター assemblyResolverを省略した場合は、既定のthrowOnError解決を実行するメソッドにパラメーターの値が渡されます。If you omit the assemblyResolver and/or typeResolver parameters, the value of the throwOnError parameter is passed to the methods that perform the default resolution.

  • throwOnError nullの場合TypeLoadException 、このメソッドFileNotFoundExceptionはを返し、assemblyResolverがを返すnullとをスローします。 typeResolver trueIf throwOnError is true, this method throws a TypeLoadException when typeResolver returns null, and a FileNotFoundException when assemblyResolver returns null.

  • このメソッドは、およびassemblyResolver typeResolverによってスローされた例外をキャッチしません。This method does not catch exceptions thrown by assemblyResolver and typeResolver. 競合回避モジュールによってスローされる例外については、お客様が責任を負うものとします。You are responsible for any exceptions that are thrown by the resolver methods.

アセンブリの解決Resolving Assemblies

メソッドassemblyResolverは、にAssemblyName typeName含まれている文字列アセンブリ名を解析することによって生成されるオブジェクトを受け取ります。The assemblyResolver method receives an AssemblyName object, which is produced by parsing the string assembly name that is included in typeName. typeNameアセンブリ名が含まれていassemblyResolverない場合、はnull呼び出されずtypeResolverにに渡されます。If typeName does not contain an assembly name, assemblyResolver is not called and null is passed to typeResolver.

assemblyResolver指定されていない場合は、標準のアセンブリプローブを使用してアセンブリが検索されます。If assemblyResolver is not supplied, standard assembly probing is used to locate the assembly. assemblyResolver指定されてGetTypeいる場合、メソッドは標準的なプローブを実行しません。そのassemblyResolver場合、に渡すすべてのアセンブリをが処理できることを確認する必要があります。If assemblyResolver is provided, the GetType method does not do standard probing; in that case you must ensure that your assemblyResolver can handle all the assemblies you pass to it.

アセンブリassemblyResolverを解決できnullない場合、メソッドはを返します。The assemblyResolver method should return null if the assembly cannot be resolved. assemblyResolvernull返しtypeResolverた場合、は呼び出されず、それ以降の処理throwOnErrortrue FileNotFoundException行われません。さらに、がの場合は、がスローされます。If assemblyResolver returns null, typeResolver is not called and no further processing occurs; additionally, if throwOnError is true, a FileNotFoundException is thrown.

に渡されたが名前の一部である場合、その1つ以上の部分nullがです。 assemblyResolver AssemblyNameIf the AssemblyName that is passed to assemblyResolver is a partial name, one or more of its parts are null. たとえば、バージョンVersionがない場合、プロパティはnullになります。For example, if it has no version, the Version property is null. プロパティ、プロパティ、およびGetPublicKeyTokenメソッドがすべてを返すnull場合は、アセンブリの簡易名のみが指定されています。 CultureInfo VersionIf the Version property, the CultureInfo property, and the GetPublicKeyToken method all return null, then only the simple name of the assembly was supplied. メソッドassemblyResolverでは、アセンブリ名のすべての部分を使用または無視できます。The assemblyResolver method can use or ignore all parts of the assembly name.

アセンブリ解決のさまざまなオプションの効果は、単純型名とアセンブリ修飾型名のために、混合名前解決のセクションにテーブルとして表示されます。The effects of different assembly resolution options are displayed as a table in the Mixed Name Resolution section, for simple and assembly-qualified type names.

解決 (型を)Resolving Types

typeNameアセンブリ名を指定しない場合typeResolverは、常にが呼び出されます。If typeName does not specify an assembly name, typeResolver is always called. typeNameアセンブリ名を指定しtypeResolverた場合、はアセンブリ名が正常に解決されたときにのみ呼び出されます。If typeName specifies an assembly name, typeResolver is called only when the assembly name is successfully resolved. またassemblyResolverは標準のアセンブリプローブnullからtypeResolverが返された場合、は呼び出されません。If assemblyResolver or standard assembly probing returns null, typeResolver is not called.

メソッドtypeResolverは、次の3つの引数を受け取ります。The typeResolver method receives three arguments:

  • 検索するアセンブリ。にnullアセンブリtypeName名が含まれていない場合は。The assembly to search or null if typeName does not contain an assembly name.

  • 型の簡易名。The simple name of the type. 入れ子にされた型の場合、これは最も外側の型になります。In the case of a nested type, this is the outermost containing type. ジェネリック型の場合、これはジェネリック型の単純な名前です。In the case of a generic type, this is the simple name of the generic type.

  • 型名の大文字trueと小文字の区別を無視する場合のブール値。A Boolean value that is true if the case of type names is to be ignored.

これらの引数の使用方法は、実装によって決まります。The implementation determines the way these arguments are used. typeResolverを解決できnullない場合、メソッドはを返す必要があります。The typeResolver method should return null if it cannot resolve the type. typeResolver GetType TypeLoadExceptionがをnull返し、がtrueの場合、のこのオーバーロードはをスローします。 throwOnErrorIf typeResolver returns null and throwOnError is true, this overload of GetType throws a TypeLoadException.

さまざまな型解決オプションの効果は、単純型とアセンブリ修飾型の名前について、混在する名前解決のセクションにテーブルとして表示されます。The effects of different type resolution options are displayed as a table in the Mixed Name Resolution section, for simple and assembly-qualified type names.

入れ子になった型の解決Resolving Nested Types

typeName入れ子にされた型である場合は、最も外側にある型typeResolverの名前だけがに渡されます。If typeName is a nested type, only the name of the outermost containing type is passed to typeResolver. typeResolverこの型を返すとGetNestedType 、最も内側の入れ子にされた型が解決されるまで、メソッドは再帰的に呼び出されます。When typeResolver returns this type, the GetNestedType method is called recursively until the innermost nested type has been resolved.

ジェネリック型の解決Resolving Generic Types

GetType 、ジェネリック型を解決するために再帰的に呼び出されます。まず、ジェネリック型自体を解決してから、その型引数を解決します。The GetType is called recursively to resolve generic types: First to resolve the generic type itself, and then to resolve its type arguments. 型引数がジェネリックの場合はGetType 、型引数を解決するために再帰的に呼び出されます。If a type argument is generic, GetType is called recursively to resolve its type arguments, and so on.

指定するとassemblyResolver typeResolverの組み合わせによって、この再帰のすべてのレベルを解決できる必要があります。The combination of assemblyResolver and typeResolver that you provide must be capable of resolving all levels of this recursion. たとえば、のassemblyResolver MyAssembly読み込みを制御するを指定したとします。For example, suppose you supply an assemblyResolver that controls the loading of MyAssembly. ジェネリック型Dictionary<string, MyType> (Dictionary(Of String, MyType) Visual Basic) を解決するとします。Suppose you want to resolve the generic type Dictionary<string, MyType> (Dictionary(Of String, MyType) in Visual Basic). 次のジェネリック型名を渡すことができます。You might pass the following generic type name:

"System.Collections.Generic.Dictionary`2[System.String,[MyNamespace.MyType, MyAssembly]]"  

はアセンブリMyType修飾型引数のみであることに注意してください。Notice that MyType is the only assembly-qualified type argument. クラスDictionary<TKey,TValue>Stringクラスの名前は、アセンブリ修飾されていません。The names of the Dictionary<TKey,TValue> and String classes are not assembly-qualified. null null Dictionary<TKey,TValue>は、アセンブリまたはのいずれかを処理できるString必要があります。これは、とに対してを受け取るためです。typeResolverYour typeResolver must be able handle either an assembly or null, because it will receive null for Dictionary<TKey,TValue> and String. このような場合は、文字列を受け取るGetTypeメソッドのオーバーロードを呼び出すことによって処理できます。これは、修飾されていない型名の両方が mscorlib.dll に存在するためです。It can handle that case by calling an overload of the GetType method that takes a string, because both of the unqualified type names are in Mscorlib.dll:

Type t = Type.GetType(test,
                      (aName) => aName.Name == "MyAssembly" ? 
                          Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") : null,
                      (assem, name, ignore) => assem == null ? 
                          Type.GetType(name, false, ignore) : 
                              assem.GetType(name, false, ignore)
                     ); 

この型名はアセンブリ修飾されていないため、ディクショナリ型および文字列型に対してメソッドは呼び出されません。assemblyResolverThe assemblyResolver method is not called for the dictionary type and the string type, because those type names are not assembly-qualified.

ここで、の代わりSystem.Stringに、最初のジェネリック引数のYourType型がYourAssemblyであるとします。Now suppose that instead of System.String, the first generic argument type is YourType, from YourAssembly:

"System.Collections.Generic.Dictionary`2[[YourNamespace.YourType, YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], [MyNamespace.MyType, MyAssembly]]"  

このアセンブリは mscorlib.dll でも現在実行中のアセンブリでもないため、アセンブリYourType修飾名を指定しないで解決することはできません。Because this assembly is neither Mscorlib.dll nor the currently executing assembly, you cannot resolve YourType without an assembly-qualified name. assemblyResolveは再帰的に呼び出されるため、この場合は処理できる必要があります。Because your assemblyResolve will be called recursively, it must be able to handle this case. 以外null AssemblyNameのアセンブリを返す代わりに、指定されたオブジェクトを使用してアセンブリの読み込みが実行されるようになりました。 MyAssemblyInstead of returning null for assemblies other than MyAssembly, it now performs an assembly load using the supplied AssemblyName object.

Type t2 = Type.GetType(test,
                       (aName) => aName.Name == "MyAssembly" ? 
                           Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") : 
                           Assembly.Load(aName),
                       (assem, name, ignore) => assem == null ? 
                           Type.GetType(name, false, ignore) : 
                               assem.GetType(name, false, ignore), true
                      ); 

使用状況のメモ」に戻ります。Back to Usage Notes.

型名の解決 (特殊文字を使用した)Resolving Type Names with Special Characters

アセンブリ修飾名では、特定の文字が特別な意味を持ちます。Certain characters have special meanings in assembly-qualified names. 単純型名にこれらの文字が含まれている場合、単純名がアセンブリ修飾名の一部であると、文字によって解析エラーが発生します。If a simple type name contains these characters, the characters cause parsing errors when the simple name is part of an assembly-qualified name. 解析エラーを回避するには、アセンブリ修飾名をGetTypeメソッドに渡す前に、円記号を使用して特殊文字をエスケープする必要があります。To avoid the parsing errors, you must escape the special characters with a backslash before you can pass the assembly-qualified name to the GetType method. たとえば、型にという名前がStrange]Type付けられている場合は、のStrange\]Typeように、角かっこの前にエスケープ文字を追加する必要があります。For example, if a type is named Strange]Type, the escape character must be added ahead of the square bracket as follows: Strange\]Type.

注意

これらの特殊文字を含む名前は Visual Basic またはC#で作成できませんが、Microsoft 中間言語 (MSIL) を使用して作成することも、動的アセンブリを出力することによって作成することもできます。Names with such special characters cannot be created in Visual Basic or C#, but can be created by using Microsoft intermediate language (MSIL) or by emitting dynamic assemblies.

次の表は、型名の特殊文字を示しています。The following table shows the special characters for type names.

文字Character 説明Meaning
,傍点, (comma) アセンブリ修飾名の区切り記号。Delimiter for assembly-qualified names.
[](角かっこ)[] (square brackets) サフィックスペアとして、は配列型を示します。区切り記号のペアとして、ジェネリック引数リストとアセンブリ修飾名を囲みます。As a suffix pair, indicates an array type; as a delimiter pair, encloses generic argument lists and assembly-qualified names.
&アンパサンド& (ampersand) サフィックスとして、型が参照型であることを示します。As a suffix, indicates that a type is a reference type.
*アスタリスク* (asterisk) サフィックスとして、型がポインター型であることを示します。As a suffix, indicates that a type is a pointer type.
++ (plus) 入れ子にされた型の区切り記号。Delimiter for nested types.
\\ (backslash) エスケープ文字。Escape character.

などのプロパティは、正しくエスケープされた文字列を返します。AssemblyQualifiedNameProperties such as AssemblyQualifiedName return correctly escaped strings. 正しくエスケープされた文字列をGetTypeメソッドに渡す必要があります。You must pass correctly escaped strings to the GetType method. さらに、メソッドGetTypeは、正しくエスケープされtypeResolverた名前を、既定の型解決メソッドに渡します。In turn, the GetType method passes correctly escaped names to typeResolver and to the default type resolution methods. 名前をエスケープ解除された名前typeResolverと比較する必要がある場合は、エスケープ文字を削除する必要があります。If you need to compare a name to an unescaped name in typeResolver, you must remove the escape characters.

使用状況のメモ」に戻ります。Back to Usage Notes.

混合名前解決Mixed Name Resolution

次の表は、のassemblyResolver typeName型名typeResolverとアセンブリ名のすべての組み合わせについて、、、および既定の名前解決の間の相互作用をまとめたものです。The following table summarizes the interactions between assemblyResolver, typeResolver, and default name resolution, for all combinations of type name and assembly name in typeName:

型名の内容Contents of type name アセンブリリゾルバーメソッドAssembly resolver method 型リゾルバーメソッドType resolver method 結果Result
型、アセンブリtype, assembly nullnull nullnull メソッドオーバーロードのType.GetType(String, Boolean, Boolean)呼び出しと同じです。Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload.
型、アセンブリtype, assembly 指示provided nullnull assemblyResolverアセンブリを返すか、 nullアセンブリを解決できない場合はを返します。assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. アセンブリが解決Assembly.GetType(String, Boolean, Boolean)された場合は、メソッドのオーバーロードを使用してアセンブリから型が読み込まれます。それ以外の場合は、型の解決は試行されません。If the assembly is resolved, the Assembly.GetType(String, Boolean, Boolean) method overload is used to load the type from the assembly; otherwise, there is no attempt to resolve the type.
型、アセンブリtype, assembly nullnull 指示provided アセンブリ名をAssemblyNameオブジェクトに変換し、 Assembly.Load(AssemblyName)メソッドオーバーロードを呼び出してアセンブリを取得することと同じです。Equivalent to converting the assembly name to an AssemblyName object and calling the Assembly.Load(AssemblyName) method overload to get the assembly. アセンブリが解決された場合は、にtypeResolver渡されますtypeResolver 。それ以外の場合は、が呼び出されず、型をさらに解決しようとすることはありません。If the assembly is resolved, it is passed to typeResolver; otherwise, typeResolver is not called and there is no further attempt to resolve the type.
型、アセンブリtype, assembly 指示provided 指示provided assemblyResolverアセンブリを返すか、 nullアセンブリを解決できない場合はを返します。assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. アセンブリが解決された場合は、にtypeResolver渡されますtypeResolver 。それ以外の場合は、が呼び出されず、型をさらに解決しようとすることはありません。If the assembly is resolved, it is passed to typeResolver; otherwise, typeResolver is not called and there is no further attempt to resolve the type.
type null (指定)null, provided nullnull メソッドオーバーロードのType.GetType(String, Boolean, Boolean)呼び出しと同じです。Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload. アセンブリ名が指定されていないため、Mscorlib.dll と現在実行中のアセンブリだけが検索されます。Because the assembly name is not provided, only Mscorlib.dll and the currently executing assembly are searched. assemblyResolver指定した場合は無視されます。If assemblyResolver is provided, it is ignored.
type null (指定)null, provided 指示provided typeResolverが呼び出され、 nullアセンブリのが渡されます。typeResolver is called, and null is passed for the assembly. typeResolverは、任意のアセンブリから型を提供できます。これには、その目的のために読み込まれるアセンブリも含まれます。typeResolver can provide a type from any assembly, including assemblies it loads for the purpose. assemblyResolver指定した場合は無視されます。If assemblyResolver is provided, it is ignored.
アセンブリassembly null (指定)null, provided null (指定)null, provided アセンブリ名がアセンブリ修飾型名であるかのように解析されるため、がスローされます。FileLoadExceptionA FileLoadException is thrown, because the assembly name is parsed as if it were an assembly-qualified type name. これにより、無効なアセンブリ名が生成されます。This results in an invalid assembly name.

次に戻る:使用上の注意、アセンブリの解決型の解決Back to: Usage Notes, Resolving Assemblies, Resolving Types.

適用対象