Type.GetType メソッド

定義

指定された型を表す Type オブジェクトを取得します。

オーバーロード

GetType()

現在の Type を取得します。

GetType(String)

大文字と小文字を区別する検索を実行して、指定した名前の Type を取得します。

GetType(String, Boolean)

大文字と小文字を区別する検索を実行し、型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の Type を取得します。

GetType(String, Boolean, Boolean)

指定した名前を持つ Type を取得します。型が見つからない場合に例外をスローするかどうかと、大文字と小文字を区別する検索を実行するかどうかも指定します。

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

指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。

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

型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。

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

大文字と小文字を区別せずに検索を実行するかどうか、および型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。

GetType()

現在の Type を取得します。

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

戻り値

Type

現在の Type です。

実装

例外

クラス初期化子が呼び出され、例外をスローします。

こちらもご覧ください

適用対象

GetType(String)

大文字と小文字を区別する検索を実行して、指定した名前の Type を取得します。

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

パラメーター

typeName
String

取得する型のアセンブリ修飾名。 以下を参照してください。AssemblyQualifiedName 型が現在実行されているアセンブリ内または mscorlib.dll/System.Private.CoreLib.dll にある場合は、名前空間で修飾された型名を提供するだけで十分です。

戻り値

Type

存在する場合は、指定した名前を持つ型。それ以外の場合は null

例外

typeNamenullです。

クラス初期化子が呼び出され、例外をスローします。

typeName が、型引数の 1 つとしてポインター型、ByRef 型、または Void を持つジェネリック型を表しています。

または

typeName は型引数の数が正しくないジェネリック型を表します。

または

typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。

typeNameTypedReference の配列を表しています。

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。

注: .NET for Windows ストア アプリ または ポータブル クラス ライブラリでは、代わりに基底クラスの例外 IOExceptionをキャッチします。

アセンブリまたはその依存関係のうちの 1 つが正しくありません。

または

共通言語ランタイムの Version 2.0 以降を現在読み込み中です。またアセンブリは新しいバージョンでコンパイルされました。

次の例では、 のSystem.Int32型を取得し、その型オブジェクトを使用して の System.Int32プロパティをFullName表示します。

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
open System

try
    // Get the type of a specified class.
    let myType1 = Type.GetType "System.Int32"
    printfn $"The full name is {myType1.FullName}.\n"
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type System.Int32"

try
    // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
    let myType2 = Type.GetType("NoneSuch", true)
    printfn $"The full name is {myType2.FullName}."
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type NoneSuch"
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

注釈

から取得できるアセンブリ修飾名がわかっている場合は、 メソッドを使用GetTypeして、別のアセンブリ内の型のオブジェクトを取得TypeAssemblyQualifiedNameできます。 GetType では、 で typeName指定されたアセンブリの読み込みが発生します。 メソッドを使用してAssembly.Loadアセンブリを読み込み、 メソッドまたは Assembly.GetTypes メソッドをAssembly.GetType使用してオブジェクトを取得Typeすることもできます。 型がコンパイル時にプログラムに認識されているアセンブリ内にある場合は、C# または Visual Basic の 演算子で使用 typeof する方が GetType 効率的です。

注意

見つからない場合 typeName 、 メソッドの呼び出しは を GetType(String) 返します null。 例外はスローされません。 例外がスローされるかどうかを制御するには、 パラメーターを持つ メソッドの GetType オーバーロードを throwOnError 呼び出します。

GetType は、ディスクから読み込まれたアセンブリでのみ機能します。 を呼び出 GetType して、サービスを使用して定義された動的アセンブリで定義されている型を System.Reflection.Emit 検索すると、動作が矛盾する可能性があります。 動作は、動的アセンブリが永続的かどうか、つまり列挙型の または Save アクセス モードSystem.Reflection.Emit.AssemblyBuilderAccessを使用してRunAndSave作成されたかどうかによって異なります。 動的アセンブリが永続的であり、 が呼び出される前に GetType ディスクに書き込まれた場合、ローダーはディスク上の保存されたアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。 が呼び出されたときに GetType アセンブリがディスクに保存されていない場合、 メソッドは を返します nullGetType は、一時的な動的アセンブリを理解していません。したがって、 を呼び出 GetType して一時的な動的アセンブリ内の型を取得すると、 が返されます null

動的モジュールで を使用 GetType するには、イベントをサブスクライブし、保存する AppDomain.AssemblyResolve 前に を呼び出 GetType します。 それ以外の場合は、メモリ内のアセンブリの 2 つのコピーを取得します。

次の表は、型に反映するときに メソッドによって Get 返される基底クラスのメンバーを示しています。

メンバーの型 スタティック 非静的
コンストラクター いいえ いいえ
フィールド いいえ はい。 フィールドは常に名前と署名で非表示になります。
event 適用なし 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。
メソッド いいえ はい。 メソッド (仮想と非仮想の両方) は、名前で非表示にすることも、名前と署名で非表示にすることもできます。
入れ子になった型 いいえ いいえ
プロパティ 適用なし 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。
  1. 名前と署名による非表示は、カスタム修飾子、戻り値の型、パラメーター型、sentinel、アンマネージド呼び出し規則など、署名のすべての部分を考慮します。 これはバイナリ比較です。

  2. リフレクションの場合、プロパティとイベントは名前と署名によって非表示になります。 基底クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーしかない場合、派生クラス プロパティは基底クラス プロパティを非表示にし、基底クラスのセッターにアクセスすることはできません。

  3. カスタム属性は、共通型システムの一部ではありません。

配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。

typeName には、その名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。 以下を参照してください。AssemblyQualifiedName

名前空間が含まれているがアセンブリ名が含まれていない場合 typeName 、このメソッドは呼び出し元のオブジェクトのアセンブリのみを検索し、その順序で /System.Private.CoreLib.dll をmscorlib.dllします。 typeName が部分アセンブリ名または完全アセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。 アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。

プロパティは AssemblyQualifiedName 、入れ子になった型、アセンブリ名、ジェネリック型引数を含む完全修飾型名を返します。 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの単純な名前を出力し、リフレクションは、次の規則に従って、クエリ時にマングルされた名前を構築します。

Note

.NET Framework バージョン 2.0 では、プロセッサ アーキテクチャがアセンブリ ID に追加され、アセンブリ名文字列の一部として指定できます。 たとえば、"ProcessorArchitecture=msil" とします。 ただし、互換性上の理由から、 プロパティによって AssemblyQualifiedName 返される文字列には含まれません。 オブジェクトを AssemblyName 作成し、 メソッドの適切なオーバーロードに渡すことで、型を Load 読み込むこともできます。 その後、 メソッドを Assembly.GetType 使用してアセンブリから型を読み込むことができます。 参照 AssemblyName.ProcessorArchitecture.

区切り記号 説明
円記号 (\) エスケープ文字。
Backtick (') ジェネリック型の名前の末尾にある型パラメーターの数を表す 1 つ以上の数字の前に置きます。
角かっこ ([]) 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。
コンマ (,) アセンブリ名の前に置きます。
ピリオド (.) 名前空間識別子を示します。
プラス記号 (+) 入れ子になったクラスの前。

たとえば、クラスの完全修飾名は次のようになります。

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

名前空間が TopNamespace.Sub+Namespace の場合、文字列はプラス記号 (+) の前にエスケープ文字 (\) を付けて、入れ子の区切り文字として解釈されないようにする必要があります。 リフレクションでは、次のようにこの文字列が出力されます。

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

"++" は "\+\+" になり、"\" は "\\" になります。

この修飾名は永続化でき、後で を使用して を Type読み込むことができます。 を検索して読み込む Typeには、型名のみを指定するか、アセンブリ修飾型名を使用 GetType します。 GetType 型名を指定すると、呼び出し元のアセンブリ内の が検索され、次にシステム アセンブリ内で が検索 Type されます。 GetType アセンブリ修飾型名を使用すると、任意のアセンブリで が Type 検索されます。

型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字を含めることができます。 これらの末尾の文字を含まない型名を取得するには、 を使用 t.GetElementType().ToString()します。ここで t 、 は 型です。

スペースは、アセンブリ名を除くすべての型名コンポーネントに関連します。 アセンブリ名では、',' 区切り記号の前のスペースが関連しますが、',' 区切り記号の後のスペースは無視されます。

ジェネリック型の名前は、バックティック (') の後にジェネリック型引数の数を表す数字で終わります。 この名前のマングリングの目的は、コンパイラが同じ名前で異なる数の型パラメーターを持つジェネリック型をサポートできるようにすることです。これは、同じスコープで発生します。 たとえば、リフレクションは、ジェネリック メソッドTuple(Of T0, T1)Tuple(Of T)および Tuple`2 Visual Basic、または Tuple<T> Visual C# で、マングルされた名前Tuple`1Tuple<T0, T1> を返します。

ジェネリック型の場合、型引数リストは角かっこで囲み、型引数はコンマで区切られます。 たとえば、ジェネリック Dictionary<TKey,TValue> には 2 つの型パラメーターがあります。 Dictionary<TKey,TValue>StringMyTypeキーを持つ の は、次のように表される場合があります。

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

型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。 それ以外の場合、アセンブリ修飾名の部分を区切るコンマは、追加の型引数を区切るものとして解釈されます。 たとえば、 型StringMyTypeキーをDictionary<TKey,TValue>持つ fromMyAssembly.dll の は、次のように指定できます。

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

注意

アセンブリ修飾型は、型パラメーター リスト内に表示される場合にのみ角かっこで囲むことができます。 型パラメーター リストで修飾型と非修飾型のアセンブリを検索する規則は、修飾型と非修飾非ジェネリック型の規則と同じです。

Null 許容型は、ジェネリック型の特殊なケースです。 たとえば、null 許容 Int32 は文字列 "System.Nullable'1[System.Int32]" で表されます。

注意

C#、C++、および Visual Basic では、型演算子を使用して null 許容型を取得することもできます。 たとえば、null 許容 Boolean 型は、C# では によって typeof(Nullable<bool>) 、C++ では によって Nullable<Boolean>::typeid 、Visual Basic では によって GetType(Nullable(Of Boolean)) 返されます。

次の表は、さまざまな型に GetType 使用する構文を示しています。

取得するには 使用
null 許容 Int32 Type.GetType("System.Nullable`1[System.Int32]")
へのアンマネージド ポインター MyType Type.GetType("MyType*")
へのポインターへのアンマネージ ポインター MyType Type.GetType("MyType**")
マネージド ポインターまたは への参照 MyType Type.GetType("MyType&"). ポインターとは異なり、参照は 1 つのレベルに制限されます。
親クラスと入れ子になったクラス Type.GetType("MyParentClass+MyNestedClass")
下限が 0 の 1 次元配列 Type.GetType("MyType[]")
下限が不明な 1 次元配列 Type.GetType("MyType[*]")
n 次元配列 角かっこ内のコンマ (,) は、合計 n から 1 回です。 たとえば、 System.Object[,,] は 3 次元 Object 配列を表します。
1 次元配列の配列 Type.GetType("MyType[][]")
不明な下限を持つ四角形の 2 次元配列 Type.GetType("MyType[,]")
1 つの型引数を持つジェネリック型 Type.GetType("MyGenericType`1[MyType]")
2 つの型引数を持つジェネリック型 Type.GetType("MyGenericType`2[MyType,AnotherType]")
2 つのアセンブリ修飾型引数を持つジェネリック型 Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型 Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
型引数が 2 つの型引数を持つジェネリック型であるジェネリック型 Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

こちらもご覧ください

適用対象

GetType(String, Boolean)

大文字と小文字を区別する検索を実行し、型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の Type を取得します。

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType (string typeName, bool throwOnError);
public static Type? GetType (string typeName, bool throwOnError);
static member GetType : string * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean) As Type

パラメーター

typeName
String

取得する型のアセンブリ修飾名。 以下を参照してください。AssemblyQualifiedName 型が現在実行されているアセンブリ内または mscorlib.dll/System.Private.CoreLib.dll にある場合は、名前空間で修飾された型名を提供するだけで十分です。

throwOnError
Boolean

型が見つからなかったときに例外をスローする場合は truefalse を返す場合は null。 また、false を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。 「例外」を参照してください。

戻り値

Type

指定した名前を持つ型。 型が見つからない場合、throwOnError パラメーターで null を返すか例外をスローするかを指定します。 一部の場合は、throwOnError の値に関係なく、例外がスローされます。 「例外」を参照してください。

例外

typeNamenullです。

クラス初期化子が呼び出され、例外をスローします。

throwOnErrortrue です。型が見つかりません。

または

throwOnErrortrue です。 typeName に埋め込まれたタブなどの正しくない文字が含まれています。

または

throwOnErrortrue です。 typeName は空の文字列です。

または

throwOnErrortrue です。 typeName は無効なサイズの配列型を表します。

または

typeNameTypedReference の配列を表しています。

throwOnErrortrue で、 typeName に正しくない構文が含まれています。 例: "MyType[,*,]"。

または

typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。

または

typeName は型引数の数が正しくないジェネリック型を表します。

または

typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。

throwOnErrortrue です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。

注: .NET for Windows ストア アプリ または ポータブル クラス ライブラリでは、代わりに基本クラスの例外 IOExceptionである をキャッチします。

アセンブリまたはその依存関係のうちの 1 つが正しくありません。

または

共通言語ランタイムの Version 2.0 以降を現在読み込み中です。またアセンブリは新しいバージョンでコンパイルされました。

次の例では、 のSystem.Int32型を取得し、その型オブジェクトを使用して の System.Int32プロパティをFullName表示します。 型オブジェクトが存在しないアセンブリを参照している場合、この例では例外がスローされます。

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
open System

try
    // Get the type of a specified class.
    let myType1 = Type.GetType "System.Int32"
    printfn $"The full name is {myType1.FullName}.\n"
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type System.Int32"

try
    // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
    let myType2 = Type.GetType("NoneSuch", true)
    printfn $"The full name is {myType2.FullName}."
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type NoneSuch"
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

注釈

から取得できるアセンブリ修飾名がわかっている場合は、 メソッドを使用GetTypeして、別のアセンブリ内の型のオブジェクトを取得TypeAssemblyQualifiedNameできます。 GetType では、 で typeName指定されたアセンブリの読み込みが発生します。 メソッドを使用してAssembly.Loadアセンブリを読み込み、 メソッドまたは Assembly.GetTypes メソッドをAssembly.GetType使用してオブジェクトを取得Typeすることもできます。 型がコンパイル時にプログラムに認識されているアセンブリ内にある場合は、C# または Visual Basic の 演算子で使用 typeof する方が GetType 効率的です。

GetType は、ディスクから読み込まれたアセンブリでのみ機能します。 を呼び出 GetType して、サービスを使用して定義された動的アセンブリで定義されている型を System.Reflection.Emit 検索すると、動作が矛盾する可能性があります。 動作は、動的アセンブリが永続的かどうか、つまり列挙型の または Save アクセス モードSystem.Reflection.Emit.AssemblyBuilderAccessを使用してRunAndSave作成されたかどうかによって異なります。 動的アセンブリが永続的であり、 が呼び出される前に GetType ディスクに書き込まれた場合、ローダーはディスク上の保存されたアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。 が呼び出されたときに GetType アセンブリがディスクに保存されていない場合、 メソッドは を返します nullGetType は、一時的な動的アセンブリを理解していません。したがって、 を呼び出 GetType して一時的な動的アセンブリ内の型を取得すると、 が返されます null

動的モジュールで を使用 GetType するには、イベントをサブスクライブし、保存する AppDomain.AssemblyResolve 前に を呼び出 GetType します。 それ以外の場合は、メモリ内のアセンブリの 2 つのコピーを取得します。

パラメーターは throwOnError 、型が見つからない場合の動作を指定し、「例外」セクションで説明されているように、他の特定の例外条件も抑制します。 の値に関係なく、一部の throwOnError例外がスローされます。 たとえば、型が見つかったが読み込めない場合、 TypeLoadException が の場合throwOnErrorfalseでも がスローされます。

次の表は、型に反映するときに メソッドによって Get 返される基底クラスのメンバーを示しています。

メンバーの型 スタティック 非静的
コンストラクター いいえ いいえ
フィールド いいえ はい。 フィールドは常に名前と署名で非表示になります。
event 適用なし 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。
メソッド いいえ はい。 メソッド (仮想と非仮想の両方) は、名前で非表示にすることも、名前と署名で非表示にすることもできます。
入れ子になった型 いいえ いいえ
プロパティ 適用なし 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。
  1. 名前と署名による非表示は、カスタム修飾子、戻り値の型、パラメーター型、sentinel、アンマネージド呼び出し規則など、署名のすべての部分を考慮します。 これはバイナリ比較です。

  2. リフレクションの場合、プロパティとイベントは名前と署名によって非表示になります。 基底クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーしかない場合、派生クラス プロパティは基底クラス プロパティを非表示にし、基底クラスのセッターにアクセスすることはできません。

  3. カスタム属性は、共通型システムの一部ではありません。

配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。

typeName には、その名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。 以下を参照してください。AssemblyQualifiedName

名前空間が含まれているがアセンブリ名が含まれていない場合 typeName 、このメソッドは呼び出し元のオブジェクトのアセンブリのみを検索し、その順序で /System.Private.CoreLib.dll をmscorlib.dllします。 typeName が部分アセンブリ名または完全アセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。 アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。

プロパティは AssemblyQualifiedName 、入れ子になった型、アセンブリ名、ジェネリック引数を含む完全修飾型名を返します。 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの単純な名前を出力し、リフレクションは、次の規則に従って、クエリ時にマングルされた名前を構築します。

Note

.NET Framework バージョン 2.0 では、プロセッサ アーキテクチャがアセンブリ ID に追加され、アセンブリ名文字列の一部として指定できます。 たとえば、"ProcessorArchitecture=msil" とします。 ただし、互換性上の理由から、 プロパティによって AssemblyQualifiedName 返される文字列には含まれません。 オブジェクトを AssemblyName 作成し、 メソッドの適切なオーバーロードに渡すことで、型を Load 読み込むこともできます。 その後、 メソッドを Assembly.GetType 使用して、アセンブリから型を読み込むことができます。 参照 AssemblyName.ProcessorArchitecture.

区切り記号 説明
円記号 (\) エスケープ文字。
Backtick (') ジェネリック型の名前の末尾にある型パラメーターの数を表す 1 つ以上の数字の前に置きます。
角かっこ ([]) 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。
コンマ (,) アセンブリ名の前に置きます。
ピリオド (.) 名前空間識別子を示します。
プラス記号 (+) 入れ子になったクラスの前。

たとえば、クラスの完全修飾名は次のようになります。

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

名前空間が TopNamespace.Sub+Namespace の場合、文字列はプラス記号 (+) の前にエスケープ文字 (\) を付けて、入れ子の区切り記号として解釈されないようにする必要があります。 リフレクションでは、次のようにこの文字列が出力されます。

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

"++" は "\+\+" になり、"\" は "\\" になります。

この修飾名を永続化し、後で を使用して を Type読み込むことができます。 を検索して読み込む Typeには、型名のみを指定するか、アセンブリ修飾型名を使用 GetType します。 GetType 型名のみを指定すると、呼び出し元のアセンブリ内の が検索 Type され、次に System アセンブリ内で が検索されます。 GetType アセンブリ修飾型名を使用すると、任意のアセンブリで が Type 検索されます。

型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字が含まれる場合があります。 これらの末尾の文字を含まない型名を取得するには、 を使用 t.GetElementType().ToString()します。ここで t 、 は 型です。

スペースは、アセンブリ名を除くすべての型名コンポーネントに関連します。 アセンブリ名では、',' 区切り記号の前のスペースが関連しますが、',' 区切り記号の後のスペースは無視されます。

ジェネリック型の名前は、バックティック (') の後にジェネリック型引数の数を表す数字で終わります。 この名前の管理の目的は、コンパイラが同じ名前を持ち、異なる数の型パラメーターを持ち、同じスコープで発生するジェネリック型をサポートできるようにすることです。 たとえば、リフレクションは、ジェネリック メソッドTuple(Of T)Tuple(Of T0, T1)および Tuple`2 Visual Basic、または Tuple<T> Visual C# で、壊れた名前Tuple`1Tuple<T0, T1> を返します。

ジェネリック型の場合、型引数リストは角かっこで囲まれており、型引数はコンマで区切られます。 たとえば、ジェネリック Dictionary<TKey,TValue> には 2 つの型パラメーターがあります。 Dictionary<TKey,TValue>Stringのキーを持つ の MyType は、次のように表される場合があります。

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

型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。 それ以外の場合、アセンブリ修飾名の部分を区切るコンマは、追加の型引数を区切るものとして解釈されます。 たとえば、 型StringMyTypeキーをDictionary<TKey,TValue>持つ MyAssembly.dll の を次のように指定できます。

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

注意

アセンブリ修飾型は、型パラメーター リスト内に出現する場合にのみ角かっこで囲むことができます。 型パラメーター リストで修飾型と非修飾型のアセンブリを検索する規則は、修飾型と非修飾非ジェネリック型の規則と同じです。

Null 許容型は、ジェネリック型の特殊なケースです。 たとえば、null 許容 Int32 は文字列 "System.Nullable'1[System.Int32] で表されます。

注意

C#、C++、Visual Basic では、型演算子を使用して null 許容型を取得することもできます。 たとえば、null 許容 Boolean 型は、C# では によって typeof(Nullable<bool>) 、C++ では によって Nullable<Boolean>::typeid 、Visual Basic では によって GetType(Nullable(Of Boolean)) 返されます。

次の表は、さまざまな型に GetType 使用する構文を示しています。

取得するには 使用
null 許容 Int32 Type.GetType("System.Nullable`1[System.Int32]")
へのアンマネージ ポインター MyType Type.GetType("MyType*")
へのポインターへのアンマネージ ポインター MyType Type.GetType("MyType**")
マネージド ポインターまたは への参照 MyType Type.GetType("MyType&"). ポインターとは異なり、参照は 1 つのレベルに制限されます。
親クラスと入れ子になったクラス Type.GetType("MyParentClass+MyNestedClass")
下限が 0 の 1 次元配列 Type.GetType("MyArray[]")
下限が不明な 1 次元配列 Type.GetType("MyArray[*]")
n 次元配列 角かっこ内のコンマ (,) は、合計 n から 1 回です。 たとえば、 System.Object[,,] は 3 次元 Object 配列を表します。
2 次元配列の配列 Type.GetType("MyArray[][]")
下限が不明な四角形の 2 次元配列 Type.GetType("MyArray[,]")
1 つの型引数を持つジェネリック型 Type.GetType("MyGenericType`1[MyType]")
2 つの型引数を持つジェネリック型 Type.GetType("MyGenericType`2[MyType,AnotherType]")
2 つのアセンブリ修飾型引数を持つジェネリック型 Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型 Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
型引数が 2 つの型引数を持つジェネリック型であるジェネリック型 Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

こちらもご覧ください

適用対象

GetType(String, Boolean, Boolean)

指定した名前を持つ Type を取得します。型が見つからない場合に例外をスローするかどうかと、大文字と小文字を区別する検索を実行するかどうかも指定します。

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, bool throwOnError, bool ignoreCase);
public static Type? GetType (string typeName, bool throwOnError, bool ignoreCase);
static member GetType : string * bool * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean, ignoreCase As Boolean) As Type

パラメーター

typeName
String

取得する型のアセンブリ修飾名。 以下を参照してください。AssemblyQualifiedName 型が現在実行されているアセンブリ内または mscorlib.dll/System.Private.CoreLib.dll にある場合は、名前空間で修飾された型名を提供するだけで十分です。

throwOnError
Boolean

型が見つからなかったときに例外をスローする場合は truefalse を返す場合は null。 また、false を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。 「例外」を参照してください。

ignoreCase
Boolean

大文字と小文字を区別せずに true の検索を実行するには typeName。大文字と小文字を区別して false の検索を実行するには typeName

戻り値

Type

指定した名前を持つ型。 型が見つからない場合、throwOnError パラメーターで null を返すか例外をスローするかを指定します。 一部の場合は、throwOnError の値に関係なく、例外がスローされます。 「例外」を参照してください。

例外

typeNamenullです。

クラス初期化子が呼び出され、例外をスローします。

throwOnErrortrue です。型が見つかりません。

または

throwOnErrortrue です。 typeName に埋め込まれたタブなどの正しくない文字が含まれています。

または

throwOnErrortrue です。 typeName は空の文字列です。

または

throwOnErrortrue です。 typeName は無効なサイズの配列型を表します。

または

typeNameTypedReference の配列を表しています。

throwOnErrortrue で、 typeName に正しくない構文が含まれています。 例: "MyType[,*,]"。

または

typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。

または

typeName は型引数の数が正しくないジェネリック型を表します。

または

typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。

throwOnErrortrue です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。

アセンブリまたはその依存関係のうちの 1 つが正しくありません。

または

共通言語ランタイムの Version 2.0 以降を現在読み込み中です。またアセンブリは新しいバージョンでコンパイルされました。

注釈

から取得できるアセンブリ修飾名がわかっている場合は、 メソッドを使用GetTypeして、別のアセンブリ内の型のオブジェクトを取得TypeAssemblyQualifiedNameできます。 GetType では、 で typeName指定されたアセンブリの読み込みが発生します。 メソッドを使用してAssembly.Loadアセンブリを読み込み、 メソッドまたは Assembly.GetTypes メソッドをAssembly.GetType使用してオブジェクトを取得Typeすることもできます。 型がコンパイル時にプログラムに認識されているアセンブリ内にある場合は、C# または Visual Basic の 演算子で使用 typeof する方が GetType 効率的です。

GetType は、ディスクから読み込まれたアセンブリでのみ機能します。 を呼び出 GetType して、サービスを使用して定義された動的アセンブリで定義されている型を System.Reflection.Emit 検索すると、動作が矛盾する可能性があります。 動作は、動的アセンブリが永続的かどうか、つまり列挙型の または Save アクセス モードSystem.Reflection.Emit.AssemblyBuilderAccessを使用してRunAndSave作成されたかどうかによって異なります。 動的アセンブリが永続的であり、 が呼び出される前に GetType ディスクに書き込まれた場合、ローダーはディスク上の保存されたアセンブリを検索し、そのアセンブリを読み込み、そのアセンブリから型を取得します。 が呼び出されたときに GetType アセンブリがディスクに保存されていない場合、 メソッドは を返します nullGetType は、一時的な動的アセンブリを理解していません。したがって、 を呼び出 GetType して一時的な動的アセンブリ内の型を取得すると、 が返されます null

動的モジュールで を使用 GetType するには、イベントをサブスクライブし、保存する AppDomain.AssemblyResolve 前に を呼び出 GetType します。 それ以外の場合は、メモリ内のアセンブリの 2 つのコピーを取得します。

パラメーターは throwOnError 、型が見つからない場合の動作を指定し、「例外」セクションで説明されているように、他の特定の例外条件も抑制します。 の値に関係なく、一部の throwOnError例外がスローされます。 たとえば、型が見つかったが読み込めない場合、 TypeLoadException が の場合throwOnErrorfalseでも がスローされます。

次の表は、型に反映するときに メソッドによって Get 返される基底クラスのメンバーを示しています。

メンバーの型 スタティック 非静的
コンストラクター いいえ いいえ
フィールド いいえ はい。 フィールドは常に名前と署名で非表示になります。
event 適用なし 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。
メソッド いいえ はい。 メソッド (仮想と非仮想の両方) は、名前で非表示にすることも、名前と署名で非表示にすることもできます。
入れ子になった型 いいえ いいえ
プロパティ 適用なし 一般的な型システムルールは、継承が プロパティを実装するメソッドの継承と同じであるという点です。 リフレクションでは、プロパティは名前と署名による非表示として扱います。 以下の注 2 を参照してください。
  1. 名前と署名による非表示は、カスタム修飾子、戻り値の型、パラメーター型、sentinel、アンマネージド呼び出し規則など、署名のすべての部分を考慮します。 これはバイナリ比較です。

  2. リフレクションの場合、プロパティとイベントは名前と署名によって非表示になります。 基底クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーしかない場合、派生クラス プロパティは基底クラス プロパティを非表示にし、基底クラスのセッターにアクセスすることはできません。

  3. カスタム属性は、共通型システムの一部ではありません。

配列または COM 型は、使用可能なクラスのテーブルに既に読み込まれていない限り、検索されません。

typeName には、その名前空間で修飾された型名、またはアセンブリ名の指定を含むアセンブリ修飾名を指定できます。 以下を参照してください。AssemblyQualifiedName

名前空間が含まれているがアセンブリ名が含まれていない場合 typeName 、このメソッドは呼び出し元のオブジェクトのアセンブリのみを検索し、その順序で /System.Private.CoreLib.dll をmscorlib.dllします。 typeName が部分アセンブリ名または完全アセンブリ名で完全修飾されている場合、このメソッドは指定されたアセンブリを検索します。 アセンブリに厳密な名前が付いている場合は、完全なアセンブリ名が必要です。

プロパティは AssemblyQualifiedName 、入れ子になった型、アセンブリ名、および型引数を含む完全修飾型名を返します。 共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの単純な名前を出力し、リフレクションは、次の規則に従って、クエリ時にマングルされた名前を構築します。

注意

.NET Framework バージョン 2.0 では、プロセッサ アーキテクチャがアセンブリ ID に追加され、アセンブリ名文字列の一部として指定できます。 たとえば、"ProcessorArchitecture=msil" とします。 ただし、互換性上の理由から、 プロパティによって AssemblyQualifiedName 返される文字列には含まれません。 オブジェクトを AssemblyName 作成し、 メソッドの適切なオーバーロードに渡すことで、型を Load 読み込むこともできます。 その後、 メソッドを Assembly.GetType 使用して、アセンブリから型を読み込むことができます。 参照 AssemblyName.ProcessorArchitecture.

区切り記号 説明
円記号 (\) エスケープ文字。
Backtick (') ジェネリック型の名前の末尾にある型パラメーターの数を表す 1 つ以上の数字の前に置きます。
角かっこ ([]) 構築されたジェネリック型のジェネリック型引数リストを囲みます。型引数リスト内で、アセンブリ修飾型を囲みます。
コンマ (,) アセンブリ名の前に置きます。
ピリオド (.) 名前空間識別子を示します。
プラス記号 (+) 入れ子になったクラスの前。

たとえば、クラスの完全修飾名は次のようになります。

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

名前空間が TopNamespace.Sub+Namespace の場合、文字列はプラス記号 (+) の前にエスケープ文字 (\) を付けて、入れ子の区切り記号として解釈されないようにする必要があります。 リフレクションでは、次のようにこの文字列が出力されます。

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

"++" は "\+\+" になり、"\" は "\\" になります。

この修飾名を永続化し、後で を使用して を Type読み込むことができます。 を検索して読み込む Typeには、型名のみを指定するか、アセンブリ修飾型名を使用 GetType します。 GetType 型名のみを指定すると、呼び出し元のアセンブリ内の が検索 Type され、次に System アセンブリ内で が検索されます。 GetType アセンブリ修飾型名を使用すると、任意のアセンブリで が Type 検索されます。

型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字が含まれる場合があります。 これらの末尾の文字を含まない型名を取得するには、 を使用 t.GetElementType().ToString()します。ここで t 、 は 型です。

スペースは、アセンブリ名を除くすべての型名コンポーネントに関連します。 アセンブリ名では、',' 区切り記号の前のスペースが関連しますが、',' 区切り記号の後のスペースは無視されます。

ジェネリック型の名前は、バックティック (') の後にジェネリック型引数の数を表す数字で終わります。 この名前の管理の目的は、コンパイラが同じ名前を持ち、異なる数の型パラメーターを持ち、同じスコープで発生するジェネリック型をサポートできるようにすることです。 たとえば、リフレクションは、ジェネリック メソッドTuple(Of T)Tuple(Of T0, T1)および Tuple`2 Visual Basic、または Tuple<T> Visual C# で、壊れた名前Tuple`1Tuple<T0, T1> を返します。

ジェネリック型の場合、型引数リストは角かっこで囲まれており、型引数はコンマで区切られます。 たとえば、ジェネリック Dictionary<TKey,TValue> には 2 つの型パラメーターがあります。 Dictionary<TKey,TValue>Stringのキーを持つ の MyType は、次のように表される場合があります。

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

型引数リスト内でアセンブリ修飾型を指定するには、アセンブリ修飾型を角かっこで囲みます。 それ以外の場合、アセンブリ修飾名の部分を区切るコンマは、追加の型引数を区切るものとして解釈されます。 たとえば、 型StringMyTypeキーをDictionary<TKey,TValue>持つ MyAssembly.dll の を次のように指定できます。

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

注意

アセンブリ修飾型は、型パラメーター リスト内に出現する場合にのみ角かっこで囲むことができます。 型パラメーター リストで修飾型と非修飾型のアセンブリを検索する規則は、修飾型と非修飾非ジェネリック型の規則と同じです。

Null 許容型は、ジェネリック型の特殊なケースです。 たとえば、null 許容 Int32 は文字列 "System.Nullable'1[System.Int32] で表されます。

注意

C#、C++、Visual Basic では、型演算子を使用して null 許容型を取得することもできます。 たとえば、null 許容 Boolean 型は、C# では によって typeof(Nullable<bool>) 、C++ では によって Nullable<Boolean>::typeid 、Visual Basic では によって GetType(Nullable(Of Boolean)) 返されます。

次の表は、さまざまな型に GetType 使用する構文を示しています。

取得するには 使用
null 許容 Int32 Type.GetType("System.Nullable`1[System.Int32]")
へのアンマネージ ポインター MyType Type.GetType("MyType*")
へのポインターへのアンマネージ ポインター MyType Type.GetType("MyType**")
マネージド ポインターまたは への参照 MyType Type.GetType("MyType&"). ポインターとは異なり、参照は 1 つのレベルに制限されます。
親クラスと入れ子になったクラス Type.GetType("MyParentClass+MyNestedClass")
下限が 0 の 1 次元配列 Type.GetType("MyArray[]")
下限が不明な 1 次元配列 Type.GetType("MyArray[*]")
n 次元配列 角かっこ内のコンマ (,) は、合計 n から 1 回です。 たとえば、 System.Object[,,] は 3 次元 Object 配列を表します。
2 次元配列の配列 Type.GetType("MyArray[][]")
下限が不明な四角形の 2 次元配列 Type.GetType("MyArray[,]")
1 つの型引数を持つジェネリック型 Type.GetType("MyGenericType`1[MyType]")
2 つの型引数を持つジェネリック型 Type.GetType("MyGenericType`2[MyType,AnotherType]")
2 つのアセンブリ修飾型引数を持つジェネリック型 Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
アセンブリ修飾型引数を持つアセンブリ修飾ジェネリック型 Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
型引数が 2 つの型引数を持つジェネリック型であるジェネリック型 Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

こちらもご覧ください

適用対象

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,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);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type)) As Type

パラメーター

typeName
String

取得する型の名前。 typeResolver パラメーターを指定する場合は、typeResolver が解決できる任意の文字列を型名として使用できます。 assemblyResolver パラメーターを指定する場合、または標準の型解決を使用する場合は、typeName をアセンブリ修飾名にする必要があります (AssemblyQualifiedNameを参照)。ただし、現在実行されているアセンブリ内または mscorlib.dll/System.Private.CoreLib.dll に型がある場合は、名前空間で修飾された型名を指定するだけで十分です。

assemblyResolver
Func<AssemblyName,Assembly>

で指定されたアセンブリを特定して返すメソッドtypeName. assemblyResolver には、アセンブリ名が AssemblyName オブジェクトとして渡されます。 typeName にアセンブリの名前が含まれていない場合、assemblyResolver は呼び出されません。 assemblyResolver を指定しない場合は、標準のアセンブリ解決が実行されます。

注意 不明または信頼されていない呼び出し元からメソッドを渡さないでください。 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。 指定したメソッドまたは使い慣れているメソッドだけを使用してください。

typeResolver
Func<Assembly,String,Boolean,Type>

typeName で指定された型を、assemblyResolver または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。 アセンブリが指定されていない場合は、typeResolver メソッドで指定できます。 このメソッドは、大文字と小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには false が渡されます。

注意 不明または信頼されていない呼び出し元からメソッドを渡さないでください。

戻り値

Type

指定された名前の型。型が見つからない場合は null

例外

typeNamenullです。

クラス初期化子が呼び出され、例外をスローします。

typeName が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。

または

typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。

または

typeName は型引数の数が正しくないジェネリック型を表します。

または

typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。

typeNameTypedReference の配列を表しています。

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。

または

typeName に無効なアセンブリ名が含まれています。

または

typeName が、型名のない有効なアセンブリ名です。

アセンブリまたはその依存関係のうちの 1 つが正しくありません。

または

現在読み込まれているバージョンよりも新しいバージョンの共通言語ランタイムで、アセンブリがコンパイルされました。

注釈

このメソッドの使用シナリオと、 パラメーターと typeResolver パラメーターのassemblyResolver詳細については、メソッドのオーバーロードに関するページをGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)参照してください。

注意

見つからない場合 typeName 、 メソッドの呼び出しは を GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) 返します null。 例外はスローされません。 例外がスローされるかどうかを制御するには、 パラメーターを持つ メソッドの GetType オーバーロードを throwOnError 呼び出します。

このメソッド オーバーロードの呼び出しは、メソッド オーバーロードのGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)呼び出しと、 パラメーターと パラメーターのfalsethrowOnError指定とignoreCase同じです。

適用対象

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

型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError);
public static Type? GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver, bool throwOnError);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean) As Type

パラメーター

typeName
String

取得する型の名前。 typeResolver パラメーターを指定する場合は、typeResolver が解決できる任意の文字列を型名として使用できます。 assemblyResolver パラメーターを指定する場合、または標準の型解決を使用する場合は、typeName をアセンブリ修飾名にする必要があります (AssemblyQualifiedNameを参照)。ただし、現在実行されているアセンブリ内または mscorlib.dll/System.Private.CoreLib.dll に型がある場合は、名前空間で修飾された型名を指定するだけで十分です。

assemblyResolver
Func<AssemblyName,Assembly>

で指定されたアセンブリを特定して返すメソッドtypeName. assemblyResolver には、アセンブリ名が AssemblyName オブジェクトとして渡されます。 typeName にアセンブリの名前が含まれていない場合、assemblyResolver は呼び出されません。 assemblyResolver を指定しない場合は、標準のアセンブリ解決が実行されます。

注意 不明または信頼されていない呼び出し元からメソッドを渡さないでください。 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。 指定したメソッドまたは使い慣れているメソッドだけを使用してください。

typeResolver
Func<Assembly,String,Boolean,Type>

typeName で指定された型を、assemblyResolver または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。 アセンブリが指定されていない場合は、このメソッドで指定できます。 このメソッドは、大文字と小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには false が渡されます。

注意 不明または信頼されていない呼び出し元からメソッドを渡さないでください。

throwOnError
Boolean

型が見つからなかったときに例外をスローする場合は truefalse を返す場合は null。 また、false を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。 「例外」を参照してください。

戻り値

Type

指定した名前を持つ型。 型が見つからない場合、throwOnError パラメーターで null を返すか例外をスローするかを指定します。 一部の場合は、throwOnError の値に関係なく、例外がスローされます。 「例外」を参照してください。

例外

typeNamenullです。

クラス初期化子が呼び出され、例外をスローします。

throwOnErrortrue です。型が見つかりません。

または

throwOnErrortrue です。 typeName に埋め込まれたタブなどの正しくない文字が含まれています。

または

throwOnErrortrue です。 typeName は空の文字列です。

または

throwOnErrortrue です。 typeName は無効なサイズの配列型を表します。

または

typeNameTypedReference の配列を表しています。

typeName が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。

または

throwOnErrortrue です。typeName に無効な構文 ("MyType[,*,]" など) が含まれています。

または

typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。

または

typeName は型引数の数が正しくないジェネリック型を表します。

または

typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。

throwOnErrortrue です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。

または

typeName に無効なアセンブリ名が含まれています。

または

typeName が、型名のない有効なアセンブリ名です。

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。

アセンブリまたはその依存関係のうちの 1 つが正しくありません。

または

現在読み込まれているバージョンよりも新しいバージョンの共通言語ランタイムで、アセンブリがコンパイルされました。

注釈

このメソッドの使用シナリオと、 パラメーターと typeResolver パラメーターのassemblyResolver詳細については、メソッドのオーバーロードに関するページをGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)参照してください。

このメソッド オーバーロードの呼び出しは、メソッド のオーバーロードをGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)呼び出し、 パラメーターにをignoreCase指定するfalseのと同じです。

適用対象

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

大文字と小文字を区別せずに検索を実行するかどうか、および型が見つからない場合に例外をスローするかどうかを指定して、指定した名前の型を取得します。オプションとして、アセンブリおよび型を解決するカスタム メソッドを指定できます。

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError, bool ignoreCase);
public static Type? GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError, bool ignoreCase);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean, ignoreCase As Boolean) As Type

パラメーター

typeName
String

取得する型の名前。 typeResolver パラメーターを指定する場合は、typeResolver が解決できる任意の文字列を型名として使用できます。 assemblyResolver パラメーターを指定する場合、または標準の型解決を使用する場合は、typeName をアセンブリ修飾名にする必要があります (AssemblyQualifiedNameを参照)。ただし、現在実行されているアセンブリ内または mscorlib.dll/System.Private.CoreLib.dll に型がある場合は、名前空間で修飾された型名を指定するだけで十分です。

assemblyResolver
Func<AssemblyName,Assembly>

で指定されたアセンブリを特定して返すメソッドtypeName. assemblyResolver には、アセンブリ名が AssemblyName オブジェクトとして渡されます。 typeName にアセンブリの名前が含まれていない場合、assemblyResolver は呼び出されません。 assemblyResolver を指定しない場合は、標準のアセンブリ解決が実行されます。

注意 不明または信頼されていない呼び出し元からメソッドを渡さないでください。 渡した場合は、悪意のあるコードに対して特権が昇格される可能性があります。 指定したメソッドまたは使い慣れているメソッドだけを使用してください。

typeResolver
Func<Assembly,String,Boolean,Type>

typeName で指定された型を、assemblyResolver または標準のアセンブリ解決によって返されたアセンブリから特定して返すメソッド。 アセンブリが指定されていない場合は、このメソッドで指定できます。 このメソッドは、大文字小文字を区別せずに検索を実行するかどうかを指定するパラメーターも受け取ります。そのパラメーターには、ignoreCase の値が渡されます。

注意 不明または信頼されていない呼び出し元からメソッドを渡さないでください。

throwOnError
Boolean

型が見つからなかったときに例外をスローする場合は truefalse を返す場合は null。 また、false を指定すると、一部の例外条件は抑制されますが、すべての例外が抑制されるわけではありません。 「例外」を参照してください。

ignoreCase
Boolean

大文字と小文字を区別せずに true の検索を実行するには typeName。大文字と小文字を区別して false の検索を実行するには typeName

戻り値

Type

指定した名前を持つ型。 型が見つからない場合、throwOnError パラメーターで null を返すか例外をスローするかを指定します。 一部の場合は、throwOnError の値に関係なく、例外がスローされます。 「例外」を参照してください。

例外

typeNamenullです。

クラス初期化子が呼び出され、例外をスローします。

throwOnErrortrue です。型が見つかりません。

または

throwOnErrortrue です。 typeName に埋め込まれたタブなどの正しくない文字が含まれています。

または

throwOnErrortrue です。 typeName は空の文字列です。

または

throwOnErrortrue です。 typeName は無効なサイズの配列型を表します。

または

typeNameTypedReference の配列を表しています。

typeName が型名とアセンブリ名に解析される際にエラーが発生します (たとえば、単純な型名にエスケープされていない特殊文字が含まれている場合など)。

または

throwOnErrortrue です。typeName に無効な構文 ("MyType[,*,]" など) が含まれています。

または

typeName が、型引数の 1 つとしてポインター型、 ByRef 型、または Void を持つジェネリック型を表しています。

または

typeName は型引数の数が正しくないジェネリック型を表します。

または

typeName がジェネリック型を表し、型引数のいずれかが、対応する型パラメーターの制約を満たしていません。

throwOnErrortrue です。アセンブリ、またはその依存関係のうちの 1 つが見つかりませんでした。

アセンブリまたはその依存関係のうちの 1 つが見つかりましたが、読み込むことができませんでした。

または

typeName に無効なアセンブリ名が含まれています。

または

typeName が、型名のない有効なアセンブリ名です。

アセンブリまたはその依存関係のうちの 1 つが正しくありません。

または

現在読み込まれているバージョンよりも新しいバージョンの共通言語ランタイムで、アセンブリがコンパイルされました。

注釈

メソッドの既定の実装をより柔軟な実装GetTypeに置き換えるには、このメソッド オーバーロードとそれに関連付けられているオーバーロード (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) を使用します。 型名とその型を含むアセンブリの名前を解決する独自のメソッドを提供することで、次の操作を実行できます。

  • 型の読み込み元のアセンブリのバージョンを制御します。

  • アセンブリ名を含まない型名を検索する別の場所を指定します。

  • 部分アセンブリ名を使用してアセンブリを読み込みます。

  • 共通言語ランタイム (CLR) によって作成されない のサブクラス System.Type を返します。

たとえば、バージョン トレラントなシリアル化では、このメソッドを使用すると、部分名を使用して "最適" アセンブリを検索できます。 メソッドの他の GetType オーバーロードには、バージョン番号を含むアセンブリ修飾型名が必要です。

型システムの代替実装では、CLR によって作成されない のサブクラスを返す必要がある場合があります。メソッドの System.Type 他の GetType オーバーロードによって返されるすべての型はランタイム型です。

使用状況に関するメモ

このメソッド オーバーロードとそれに関連付けられたオーバーロードは、型の名前とアセンブリの名前に解析 typeName し、名前を解決します。 アセンブリ名の解決は、型名の解決前に行われます。型名はアセンブリのコンテキストで解決する必要があるためです。

Note

アセンブリ修飾型名の概念に慣れていない場合は、 プロパティを AssemblyQualifiedName 参照してください。

がアセンブリ修飾名でない場合 typeName 、アセンブリ解決はスキップされます。 非修飾型名は、mscorlib.dll/System.Private.CoreLib.dll または現在実行中のアセンブリのコンテキストで解決できます。また、必要に応じて、 パラメーターにアセンブリを typeResolver 指定することもできます。 異なる種類の名前解決に対してアセンブリ名を含めるか省略した場合の効果は、[名前解決の 混在 ] セクションにテーブルとして表示されます。

一般的な使用上の注意:

  • メソッドは assemblyResolver 、不明な呼び出し元または typeResolver 信頼されていない呼び出し元に渡したり、信頼されていない呼び出し元に渡したりしないでください。 指定したメソッドまたは使い慣れているメソッドだけを使用してください。

    注意事項

    不明な呼び出し元または信頼されていない呼び出し元のメソッドを使用すると、悪意のあるコードに対する特権が昇格される可能性があります。

  • パラメーターまたは typeResolver パラメーターをassemblyResolver省略した場合、パラメーターの値は、既定のthrowOnError解決を実行するメソッドに渡されます。

  • が の場合throwOnError、このメソッドは を返nullすときtypeResolverに をTypeLoadExceptionスローし、 が を返す場合assemblyResolverは をFileNotFoundExceptionスローしますnulltrue

  • このメソッドは、 および によってスローされた例外をassemblyResolvertypeResolverキャッチしません。 リゾルバー メソッドによってスローされる例外は、ユーザーが担当します。

アセンブリの解決

メソッドは assemblyResolver オブジェクトを AssemblyName 受け取ります。これは、 に含まれる typeName文字列アセンブリ名を解析することによって生成されます。 がアセンブリ名を含まない場合 typeNameassemblyResolver は呼び出 null されず、 に typeResolver渡されます。

が指定されていない場合 assemblyResolver は、標準アセンブリプローブを使用してアセンブリを検索します。 が指定されている場合 assemblyResolverGetType メソッドは標準のプローブを実行しません。その場合は、渡すアセンブリをすべて確実に処理できることを確認 assemblyResolver する必要があります。

アセンブリを assemblyResolver 解決できない場合、メソッドは を返す null 必要があります。 が を返す typeResolvernull場合assemblyResolverは が呼び出されず、それ以上の処理は行われません。さらに、 が のtrue場合throwOnErrorは がFileNotFoundExceptionスローされます。

AssemblyNameassemblyResolver渡される が部分名の場合、その部分の 1 つ以上は になりますnull。 たとえば、バージョンがない場合、 Version プロパティは です nullVersionプロパティ、プロパティ、CultureInfoおよび メソッドがすべて をGetPublicKeyToken返すnull場合は、アセンブリの単純な名前のみが指定されました。 メソッドは assemblyResolver 、アセンブリ名のすべての部分を使用または無視できます。

さまざまなアセンブリ解決オプションの効果は、単純な型名とアセンブリ修飾型名の場合、[ 名前解決の混在 ] セクションにテーブルとして表示されます。

型の解決

がアセンブリ名を指定しない場合 typeName は、 typeResolver が常に呼び出されます。 アセンブリ名を指定する場合 typeName は、 typeResolver アセンブリ名が正常に解決された場合にのみが呼び出されます。 または標準アセンブリプローブが を返すnulltypeResolver場合assemblyResolver、 は呼び出されません。

メソッドは typeResolver 、次の 3 つの引数を受け取ります。

  • 検索するアセンブリ。または null がアセンブリ名を含まない場合 typeName は 。

  • 型の単純な名前。 入れ子になった型の場合、これは最も外側の格納型です。 ジェネリック型の場合、これはジェネリック型の単純な名前です。

  • 型名の大文字と小文字を無視する場合のブール値 true

実装によって、これらの引数の使用方法が決まります。 型を解決できない場合、メソッドは typeResolver を返す null 必要があります。 が を返nullthrowOnError、 が のtrue場合typeResolver、 のGetTypeこのオーバーロードは をTypeLoadExceptionスローします。

さまざまな型解決オプションの効果は、単純型名とアセンブリ修飾型名の場合は、[ 名前解決の混在 ] セクションにテーブルとして表示されます。

入れ子になった型の解決

が入れ子になった型の場合 typeName 、最も外側の包含型の名前のみが に typeResolver渡されます。 この型を返すと typeResolver 、最も内側の GetNestedType 入れ子になった型が解決されるまで、 メソッドが再帰的に呼び出されます。

ジェネリック型の解決

GetTypeは、ジェネリック型を解決するために再帰的に呼び出されます。最初にジェネリック型自体を解決してから、その型引数を解決します。 型引数がジェネリックの場合、 GetType 型引数を解決するために 再帰的に が呼び出されます。

指定する と typeResolverassemblyResolver組み合わせは、この再帰のすべてのレベルを解決できる必要があります。 たとえば、 の読み込みをMyAssembly制御する を指定assemblyResolverするとします。 ジェネリック型 Dictionary<string, MyType> (Dictionary(Of String, MyType) Visual Basic の場合) を解決するとします。 次のジェネリック型名を渡すことができます。

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

が唯一のアセンブリ修飾型引数であることに MyType 注意してください。 クラスと String クラスのDictionary<TKey,TValue>名前はアセンブリ修飾されません。 と typeResolver を受け取nullDictionary<TKey,TValue>Stringるため、アセンブリまたは nullを処理できる必要があります。 非修飾型名の両方が /System.Private.CoreLib.dll 内にあるため、文字列を受け取るメソッドのオーバーロード GetType を呼び出すことで、そのケース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)
                     );
let t =
    Type.GetType(test,
        (fun aName ->
            if aName.Name = "MyAssembly" then
                Assembly.LoadFrom @".\MyPath\v5.0\MyAssembly.dll"
            else null),
        fun assem name ignr ->
            if assem = null then
                Type.GetType(name, false, ignr)
            else
                assem.GetType(name, false, ignr))

assemblyResolverディクショナリ型と文字列型に対して メソッドは呼び出されません。これらの型名はアセンブリ修飾されていないためです。

ここで、 の代わりに、 の最初のSystem.Stringジェネリック引数型が であるとYourTypeYourAssemblyします。

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

このアセンブリは /System.Private.CoreLib.dllmscorlib.dllでも、現在実行中のアセンブリでもないため、アセンブリ修飾名がないと解決 YourType できません。 assemblyResolveは再帰的に呼び出されるため、このケースを処理できる必要があります。 以外MyAssemblyのアセンブリに対して を返すnull代わりに、指定されたAssemblyNameオブジェクトを使用してアセンブリの読み込みを実行するようになりました。

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
                      );
let t2 =
    Type.GetType(test,
        (fun aName ->
            if aName.Name = "MyAssembly" then
                Assembly.LoadFrom @".\MyPath\v5.0\MyAssembly.dll"
            else Assembly.Load aName),
        (fun assem name ignr ->
            if assem = null then
                Type.GetType(name, false, ignr)
            else
                assem.GetType(name, false, ignr)), true)

[使用状況に関するメモ] に戻ります。

特殊文字を使用した型名の解決

特定の文字は、アセンブリ修飾名に特別な意味を持ちます。 単純型名にこれらの文字が含まれている場合、単純名がアセンブリ修飾名の一部である場合、その文字によって解析エラーが発生します。 解析エラーを回避するには、アセンブリ修飾名を メソッドに渡す前に、特殊文字を円記号でエスケープする GetType 必要があります。 たとえば、型に という名前が付けられているStrange]Type場合、エスケープ文字を角かっこの前に追加する必要があります。 Strange\]Type

注意

このような特殊文字を持つ名前は Visual Basic または C# では作成できませんが、中間言語 (MSIL) Microsoft使用するか、動的アセンブリを生成して作成できます。

次の表は、型名の特殊文字を示しています。

文字 説明
, (コンマ) アセンブリ修飾名の区切り記号。
[] (角かっこ) サフィックスペアとして、 は配列型を示します。は区切り記号のペアとして、ジェネリック引数リストとアセンブリ修飾名を囲みます。
& (アンパサンド) サフィックスとして、 は、型が参照型であることを示します。
* (アスタリスク) サフィックスとして、 は型がポインター型であることを示します。
+ (プラス) 入れ子になった型の区切り記号。
\ (円記号) エスケープ文字。

などの AssemblyQualifiedName プロパティは、正しくエスケープされた文字列を返します。 正しくエスケープされた文字列を メソッドに GetType 渡す必要があります。 さらに、 メソッドは GetType 、正しくエスケープされた名前を typeResolver 既定の型解決メソッドに渡します。 の名前とエスケープされていない名前 typeResolverを比較する必要がある場合は、エスケープ文字を削除する必要があります。

[使用状況に関するメモ] に戻ります。

名前解決の混在

次の表は、 の型名とアセンブリ名typeNameのすべての組み合わせに対する、、typeResolver、および既定の名前解決の相互作用assemblyResolverをまとめたものです。

型名の内容 アセンブリ リゾルバー メソッド 型リゾルバー メソッド 結果
型、アセンブリ null null メソッド オーバーロードの呼び出しと Type.GetType(String, Boolean, Boolean) 同じです。
型、アセンブリ 提供 null assemblyResolver はアセンブリを返すか、アセンブリを null 解決できない場合は を返します。 アセンブリが解決された場合、 Assembly.GetType(String, Boolean, Boolean) メソッド オーバーロードを使用してアセンブリから型を読み込みます。それ以外の場合は、型を解決しようとしません。
型、アセンブリ null 提供 アセンブリ名を オブジェクトに AssemblyName 変換し、メソッド オーバーロードを呼び出してアセンブリを Assembly.Load(AssemblyName) 取得するのと同じです。 アセンブリが解決されると、 に typeResolver渡されます。それ以外の場合 typeResolver は が呼び出されず、型の解決はこれ以上試行されません。
型、アセンブリ 提供 提供 assemblyResolver はアセンブリを返すか、アセンブリを null 解決できない場合は を返します。 アセンブリが解決されると、 に typeResolver渡されます。それ以外の場合 typeResolver は が呼び出されず、型の解決はこれ以上試行されません。
type null、指定 null メソッド オーバーロードの呼び出しと Type.GetType(String, Boolean, Boolean) 同じです。 アセンブリ名が指定されていないため、/System.Private.CoreLib.dll と現在実行中のアセンブリmscorlib.dllのみが検索されます。 が指定されている場合 assemblyResolver 、無視されます。
type null、指定 提供 typeResolver が呼び出され null 、アセンブリに渡されます。 typeResolver は、目的のために読み込まれるアセンブリを含め、任意のアセンブリから型を提供できます。 が指定されている場合 assemblyResolver 、無視されます。
アセンブリ null、指定 null、指定 FileLoadExceptionアセンブリ名がアセンブリ修飾型名であるかのように解析されるため、 がスローされます。 これにより、アセンブリ名が無効になります。

戻る: 使用法に関するメモアセンブリの解決型の解決

適用対象