この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Type.GetType メソッド (String)

 

公開日: 2016年10月

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

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

public static Type GetType(
	string typeName
)

パラメーター

typeName
Type: System.String

取得する型のアセンブリ修飾名。AssemblyQualifiedName」を参照してください。 型が現在実行中のアセンブリまたは Mscorlib.dll 内にある場合は、名前空間で修飾された型名を指定するだけで十分です。

戻り値

Type: System.Type

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

Exception Condition
ArgumentNullException

typeNamenull です。

TargetInvocationException

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

ArgumentException

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

-または-

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

-または-

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

TypeLoadException

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

FileLoadException
System_CAPS_noteメモ

.NET for Windows Store apps または ポータブル クラス ライブラリ, 、基本クラスの例外をキャッチ IOException, 、代わりにします。

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

BadImageFormatException

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

-または-

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

使用することができます、 GetType を入手する方法、 Type 名前空間で修飾された名前がわかっている場合は、別のアセンブリ内の型のオブジェクトします。 GetType 指定されたアセンブリの読み込みを発生させます typeNameします。 使用してアセンブリを読み込むことも、 Load メソッド、およびその後で使用、 GetType または GetTypes のメソッド、 Assembly クラスに Type オブジェクトです。 C# の場合は、使用する方が効率的では、型がコンパイル時に、プログラムに認識されているアセンブリ内にある場合は、 GetType Visual Basic、または C++ です。

System_CAPS_noteメモ

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

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

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

次の表は返される基本クラスのメンバー、 Get メソッドの型でリフレクション時にします。

メンバーの型

スタティック

静的でないです。

コンストラクター

いいえ

フィールド

いいえ

はい。 フィールドは、常に、名前とシグネチャによる隠ぺいです。

イベント

該当なし

共通型システムの規則は、継承は、メソッド、プロパティを実装するのと同じです。 プロパティは、リフレクションは、名前とシグネチャによる隠ぺいとして扱います。 下記のメモ 2 を参照してください。

メソッド

いいえ

はい。 (仮想および非仮想) のメソッドは、名前による隠ぺいまたは名前と署名によって非表示にできます。

入れ子にされた型

いいえ

いいえ

プロパティ

該当なし

共通型システムの規則は、継承は、メソッド、プロパティを実装するのと同じです。 プロパティは、リフレクションは、名前とシグネチャによる隠ぺいとして扱います。 下記のメモ 2 を参照してください。

  1. 名前とシグネチャによる隠ぺいは、型、パラメーターの型、sentinel、およびアンマネージ呼び出し規約を返すすべてのカスタム修飾子を含む、シグネチャの一部と見なします。 これは、バイナリ比較です。

  2. リフレクションの場合、プロパティおよびイベントは名前とシグネチャによる隠ぺいします。 基底クラスで get と set アクセサーの両方でプロパティがある場合は、派生クラスには、get アクセサーだけ派生クラスのプロパティには、基本クラスのプロパティが非表示にし、基本クラスの set アクセス操作子にアクセスすることはできません。

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

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

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

場合 typeName 名前空間は、アセンブリ名ではなく、このメソッドはこの順序で呼び出し元のオブジェクトのアセンブリと、Mscorlib.dll だけを検索します。 型名は、部分的または完全なアセンブリ名を持つ完全に修飾されている場合、このメソッドは、指定したアセンブリで検索します。 アセンブリに厳密な名前がある場合は、アセンブリの完全名が必要です。

AssemblyQualifiedName プロパティは、入れ子にされた型、アセンブリ名、およびジェネリック型引数を含む完全修飾型名を返します。 共通言語ランタイムをサポートするすべてのコンパイラは入れ子になったクラスの簡易名を出力し、リフレクションは、次の規則に従って、照会されたときに、完全修飾名。

System_CAPS_noteメモ

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

区切り記号

説明

円記号 (\)

文字をエスケープします。

バックティック (')

ジェネリック型の名前の末尾にある、型パラメーターの数を表す 1 つ以上の数字を先頭に付きます。

角かっこ ()

構築されたジェネリック型のジェネリック型引数リストを囲む型の引数リスト内で、アセンブリ修飾型を囲みます。

コンマ (,)

アセンブリ名の前にします。

ピリオド (.)

名前空間の識別子を表します。

プラス記号 (+)

入れ子になったクラスを前に付きます。

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

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

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

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

A"では"が"\ + \ +"、および「\」「\\」になります。

この修飾名を保存および読み込みに使用された後で、 Typeです。 検索して読み込む、 Type, を使用して GetType のみ、またはアセンブリ修飾型名を持つという名前を型のいずれかです。 GetType 型と名前のみが探します、 Type 、呼び出し元のアセンブリにおよび、システム アセンブリです。 GetType アセンブリ修飾型名は探します、 Type 任意のアセンブリにします。

型名の末尾の文字を表すかどうか、型が参照型、ポインター型または配列型など、種類に関する追加情報があります。 このような末尾の文字型の名前を取得する t.GetElementType().ToString(), ここで、 t 型です。

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

ジェネリック型の名前は、後のジェネリック型引数の数を表す数字が続くバックティック (') で終わります。 名前の完全修飾の目的は、ジェネリック型と同じ名前が、型パラメーターの数値が異なる同じスコープ内で発生しているをサポートするためにコンパイラを許可するようにです。 たとえば、リフレクションが完全修飾名を返します Tuple`1Tuple`2 ジェネリック メソッドから Tuple(Of T)Tuple(Of T0, T1) Visual basic でまたは Tuple<T> および組<T0, T1> Visual C# の場合。

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

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

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

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

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

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

System_CAPS_noteメモ

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

次の表で使用する構文 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]]")

次の例の種類を取得する System.Int32 し、その型のオブジェクトを使用して、表示、 FullNameSystem.Int32です。

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

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: