Type クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<SerializableAttribute> _ <ComVisibleAttribute(True)> _ <ClassInterfaceAttribute(ClassInterfaceType.None)> _ Public MustInherit Class Type Inherits MemberInfo Implements _Type, IReflect
[SerializableAttribute] [ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType.None)] public abstract class Type : MemberInfo, _Type, IReflect
[SerializableAttribute] [ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType::None)] public ref class Type abstract : public MemberInfo, _Type, IReflect

Type は System.Reflection 機能のルートであり、メタデータにアクセスするための主要手段です。コンストラクタ、メソッド、フィールド、プロパティ、クラスのイベント、クラスを配置するモジュールやアセンブリなどの型宣言に関する情報を取得するには、Type のメンバを使用します。
型を表す Type オブジェクトは一意であり、2 つの Type オブジェクト参照が同じオブジェクトを参照するのは、これら 2 つのオブジェクトが同じ型を表す場合に限られます。これにより、参照の等価を使用して Type オブジェクトの比較ができます。
ReflectionPermission を使用しないと、コードは読み込まれたアセンブリのパブリック メンバにしかアクセスできません。実際には、Object.GetType への無制限アクセス、エクスポートされたパブリックな型への Type.GetType を使用したアクセス、GetTypeFromHandle へのアクセスなどが可能です。FullName および Attributes など、Type のプロパティの中には、ReflectionPermission を使用せずにアクセスできるものもあります。
Type は、複数の実装を持つことができる抽象基本クラスです。システムは、必ず派生クラス RuntimeType を提供します。リフレクションでは、Runtime という語で始まるすべてのクラスがシステム内のオブジェクトごとに 1 回だけ生成され、このクラスが比較操作をサポートします。
![]() |
---|
マルチスレッド シナリオでは、static データへのアクセスを同期化する目的で Type オブジェクトをロックしないでください。制御できない他のコードによってクラスの型がロックされる可能性があります。これによりデッドロックが発生することもあります。代わりに、プライベート static オブジェクトをロックすることにより、静的データへのアクセスを同期化させてください。 |
このクラスはスレッド セーフであり、複数のスレッドが同時にこの型のインスタンスから読み込むことができます。Type のインスタンスは、次に示すすべての型を表現できます。
型に関連付けられた Type オブジェクトへの参照は、次の方法で取得できます。
-
Module.GetTypes、Module.GetType、Module.FindTypes の各メソッドを使用して、モジュール内で定義されている型を表す Type オブジェクトを返す。最初のメソッドを使用すると、モジュール内で定義されているすべてのパブリック型およびプライベート型について、Type オブジェクトの配列を取得できます。Assembly.GetModule メソッドまたは Assembly.GetModules メソッドを使用するか、Type.Module プロパティを使用して Module のインスタンスを取得できます。
-
FindInterfaces メソッドを使用して、型でサポートされているインターフェイス型のリストにフィルタを適用して返す。
-
GetInterfaces メソッドおよび GetInterface メソッドを使用して、型でサポートされているインターフェイス型を表す Type オブジェクトを返す。
-
GetTypeArray メソッドを使用して、一連の任意のオブジェクトで指定されている型を表す Type オブジェクトの配列を返す。これらのオブジェクトは、Object 型の配列を使用して指定します。
-
COM との相互運用性のために提供されている GetTypeFromProgID メソッドおよび GetTypeFromCLSID メソッドを使用する。これらのメソッドは、ProgID または CLSID で指定されている型を表す Type オブジェクトを返します。
-
相互運用性のために提供されている GetTypeFromHandle メソッドを使用する。このメソッドは、クラス ハンドルで指定されている型を表す Type オブジェクトを返します。
-
C# typeof 演算子、C++ typeid 演算子、および Visual Basic GetType 演算子は、型の Type オブジェクトを取得します。
-
MakeGenericType メソッドは、構築ジェネリック型を表す Type オブジェクトを返します。この型は、ContainsGenericParameters プロパティが true を返す場合はオープン構築型です。それ以外の場合は、クローズ構築型です。ジェネリック型は、閉じた型の場合のみインスタンス化できます。
-
MakeArrayType、MakePointerType、および MakeByRefType の各メソッドは、Type オブジェクトを返します。このオブジェクトは、指定された型の配列、指定された型へのポインタ、および参照パラメータの型を表します (C# の場合は ref、Visual Basic の場合は ByRef)。
![]() |
---|
派生クラスは、呼び出し元のコードの基本クラスのプロテクト メンバにアクセスできます。また、呼び出し元のコードのアセンブリのアセンブリ メンバにアクセスすることもできます。原則として、事前バインディング コードにアクセスできる場合は、遅延バインディング コードにもアクセスできます。 |

System.Reflection.MemberInfo
System.Type
System.Reflection.Emit.EnumBuilder
System.Reflection.Emit.GenericTypeParameterBuilder
System.Reflection.Emit.TypeBuilder
System.Reflection.TypeDelegator

この型は、スレッド セーフです。

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- Type クラスのページへのリンク