このドキュメントはアーカイブされており、メンテナンスされていません。

Type クラス

型宣言を表します。型には、クラス型、インターフェイス型、配列型、値型、列挙型、型パラメータ、ジェネリック型定義、およびオープン構築ジェネリック型またはクローズ構築ジェネリック型があります。

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

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.None)] 
public abstract class Type : MemberInfo, _Type, IReflect
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
public abstract class Type extends MemberInfo implements _Type, IReflect
SerializableAttribute 
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.None) 
public abstract class Type extends MemberInfo implements _Type, IReflect

TypeSystem.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 オブジェクトへの参照は、次の方法で取得できます。

  • Object.GetType メソッドを使用して、インスタンスの型を表す Type オブジェクトを返す。

  • 静的 GetType メソッドを使用して、完全限定名で指定されている型を表す Type オブジェクトを返す。

  • Module.GetTypesModule.GetTypeModule.FindTypes の各メソッドを使用して、モジュール内で定義されている型を表す Type オブジェクトを返す。最初のメソッドを使用すると、モジュール内で定義されているすべてのパブリック型およびプライベート型について、Type オブジェクトの配列を取得できます。Assembly.GetModule メソッドまたは Assembly.GetModules メソッドを使用するか、Type.Module プロパティを使用して Module のインスタンスを取得できます。

  • FindInterfaces メソッドを使用して、型でサポートされているインターフェイス型のリストにフィルタを適用して返す。

  • GetElementType メソッドを使用して、要素を表す Type オブジェクトを返す。

  • 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 を返す場合はオープン構築型です。それ以外の場合は、クローズ構築型です。ジェネリック型は、閉じた型の場合のみインスタンス化できます。

  • MakeArrayTypeMakePointerType、および MakeByRefType の各メソッドは、Type オブジェクトを返します。このオブジェクトは、指定された型の配列、指定された型へのポインタ、および参照パラメータの型を表します (C# の場合は ref、Visual Basic の場合は ByRef)。

メモメモ

派生クラスは、呼び出し元のコードの基本クラスのプロテクト メンバにアクセスできます。また、呼び出し元のコードのアセンブリのアセンブリ メンバにアクセスすることもできます。原則として、事前バインディング コードにアクセスできる場合は、遅延バインディング コードにもアクセスできます。

メモメモ

他のインターフェイスを拡張するインターフェイスには、拡張される側のインターフェイスで定義されているメソッドは継承されません。

継承時の注意 Type から継承する場合は、GUIDInvokeMember(String,BindingFlags,Binder,Object,Object[],ParameterModifier[],CultureInfo,String[])ModuleAssemblyTypeHandleFullNameNamespaceAssemblyQualifiedNameBaseTypeGetConstructorImplGetConstructors(BindingFlags)GetMethodImplGetMethods(BindingFlags)GetField(String,BindingFlags)GetFields(BindingFlags)GetInterface(String,Boolean)GetInterfacesGetEvent(String,BindingFlags)GetEvents(BindingFlags)GetPropertyImplGetProperties(BindingFlags)GetNestedType(String,BindingFlags)GetNestedTypes(BindingFlags)GetAttributeFlagsImplIsArrayImplIsByRefImplIsPointerImplIsPrimitiveImplIsCOMObjectImplGetElementTypeHasElementTypeImplUnderlyingSystemTypeMemberInfo.NameMemberInfo.IsDefinedMemberInfo.GetCustomAttributes、および GetCustomAttributes の各メンバをオーバーライドする必要があります。

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

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

.NET Framework

サポート対象 : 2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 2.0、1.0
表示: