Type クラス
クラス型、インターフェイス型、配列型、値型、および列挙型の型宣言を表します。
この型のすべてのメンバの一覧については、Type メンバ を参照してください。
System.Object
System.Reflection.MemberInfo
System.Type
System.Reflection.Emit.EnumBuilder
System.Reflection.Emit.TypeBuilder
System.Reflection.TypeDelegator
<Serializable>
<ClassInterface(ClassInterfaceType.AutoDual)>
MustInherit Public Class Type Inherits MemberInfo Implements IReflect
[C#]
[Serializable]
[ClassInterface(ClassInterfaceType.AutoDual)]
public abstract class Type : MemberInfo, IReflect
[C++]
[Serializable]
[ClassInterface(ClassInterfaceType::AutoDual)]
public __gc __abstract class Type : public MemberInfo, IReflect
[JScript]
public
Serializable
ClassInterface(ClassInterfaceType.AutoDual)
abstract class Type extends MemberInfo implements IReflect
スレッドセーフ
この型は、マルチスレッド操作に対して安全です。
解説
Type は System.Reflection 機能のルートであり、メタデータにアクセスするための主要手段です。コンストラクタ、メソッド、フィールド、プロパティ、クラスのイベント、クラスを配置するモジュールやアセンブリなどの型宣言に関する情報を取得するには、Type のメンバを使用します。
ReflectionPermission を使用しないと、コードは読み込まれたアセンブリのパブリック メンバにしかアクセスできません。実際には、 Object.GetType への無制限アクセス、エクスポートされたパブリックな型への Type.GetType を使用したアクセス、 GetTypeFromHandle へのアクセスなどが可能です。 FullName および Attributes など、 Type のプロパティの中には、 ReflectionPermission を使用しないでアクセスできるものもあります。
Type は、複数の実装を持つことができる抽象基本クラスです。システムは、必ず派生クラス RuntimeType を提供します。リフレクションでは、Runtime という語で始まるすべてのクラスがシステム内のオブジェクトごとに 1 回だけ生成され、このクラスが比較操作をサポートします。
継承時の注意: Type から継承する場合は、 GUID 、 InvokeMember メソッド (String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) 、 Module 、 Assembly 、 TypeHandle 、 FullName 、 Namespace 、 AssemblyQualifiedName 、 BaseType 、 GetConstructorImpl 、 GetConstructors メソッド (BindingFlags) 、 GetMethodImpl 、 GetMethods メソッド (BindingFlags) 、 GetField メソッド (String, BindingFlags) 、 GetFields メソッド (BindingFlags) 、 GetInterface メソッド (String, Boolean) 、 GetInterfaces 、 GetEvent メソッド (String, BindingFlags) 、 GetEvents メソッド (BindingFlags) 、 GetPropertyImpl 、 GetProperties メソッド (BindingFlags) 、 GetNestedType メソッド (String, BindingFlags) 、 GetNestedTypes メソッド (BindingFlags) 、 GetAttributeFlagsImpl 、 IsArrayImpl 、 IsByRefImpl 、 IsPointerImpl 、 IsPrimitiveImpl 、 IsCOMObjectImpl 、 GetElementType 、 HasElementTypeImpl 、 UnderlyingSystemType 、 MemberInfo.Name 、 MemberInfo.IsDefined 、 MemberInfo.GetCustomAttributes メソッド (Boolean) 、 MemberInfo.GetCustomAttributes メソッド (Type, Boolean) の各メンバをオーバーライドする必要があります。
型を表す Type オブジェクトは一意であり、2 つの Type オブジェクト参照が同じオブジェクトを参照するのは、これら 2 つのオブジェクトが同じ型を表す場合に限られます。これにより、参照の等価を使用して Type オブジェクトの比較ができます。
メモ マルチスレッド環境では、静的 (Visual Basic では Shared) データへのアクセスを同期させるために Type オブジェクトを lock することは避けてください。制御できない他のコードによってクラスの型がロックされる可能性があります。これによりデッドロックが発生することもあります。代わりに、プライベート静的 (Visual Basic では Shared) オブジェクトをロックして静的データへのアクセスを同期させてください。
このクラスはスレッド セーフです。つまり、この型のインスタンスに対して複数のスレッドが同時に読み取りや書き込みを実行できます。Type のインスタンスは、次に示すすべての型を表現できます。
- クラス
- 値型
- 配列
- インターフェイス
- ポインタ
- 列挙体
型に関連付けられた Type オブジェクトへの参照は、次の方法で取得できます。
- Object.GetType メソッドを使用して、インスタンスの型を表す Type オブジェクトを返す。
- 静的 GetType メソッドを使用して、完全限定名で指定されている型を表す Type オブジェクトを返す。
- Module.GetTypes 、 Module.GetType 、 Module.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# または C++ の typeof 演算子を使用して、型の Type オブジェクトを取得する。
- Visual Basic .NET の GetType 演算子を使用して、型の Type オブジェクトを取得する。
メモ 派生クラスは、呼び出し元のコードの基本クラスのプロテクト メンバにアクセスできます。また、呼び出し元のコードのアセンブリのアセンブリ メンバにアクセスすることもできます。原則として、事前バインディング コードにアクセスできる場合は、遅延バインディング コードにもアクセスできます。
メモ 他のインターフェイスを拡張するインターフェイスには、拡張される側のインターフェイスで定義されているメソッドは継承されません。
.NET Compact Framework - Windows CE .NET プラットフォームに関する注意点: .NET Compact Framework の Version 1.0 は TypeHandle プロパティをサポートしていません。
必要条件
名前空間: System
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: Mscorlib (Mscorlib.dll 内)
参照
Type メンバ | System 名前空間 | Object | System.Reflection | ReflectionPermission