次の方法で共有


Type.TypeHandle プロパティ

現在の Type のハンドルを取得します。

Public MustOverride ReadOnly Property TypeHandle As _
   RuntimeTypeHandle
[C#]
public abstract RuntimeTypeHandle TypeHandle {get;}
[C++]
public: __property virtual RuntimeTypeHandle get_TypeHandle() = 0;
[JScript]
public abstract function get TypeHandle() : RuntimeTypeHandle;

プロパティ値

現在の Type のハンドル。

解説

TypeHandle は、型を表す内部データ構造へのポインタをカプセル化します。このハンドルは、プロセスの有効期間中は一意です。ハンドルは取得されたアプリケーション ドメインでだけ有効です。

使用例

[Visual Basic, C#, C++] 対応する型のハンドルを取得し、そのハンドルをハンドルから型を取得して表示を行うメソッドに渡す例を次に示します。

 
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic
Class [MyClass]
    Public myField As Integer = 10
End Class '[MyClass]
Class Type_TypeHandle
    Public Shared Sub Main()
        Try
            Dim [myClass] As New [MyClass]()

            ' Get the type of MyClass.
            Dim myClassType As Type = [myClass].GetType()

            ' Get the runtime handle of MyClass.
            Dim myClassHandle As RuntimeTypeHandle = myClassType.TypeHandle

            DisplayTypeHandle(myClassHandle)
        Catch e As Exception
            Console.WriteLine("Exception: {0}", e.Message.ToString())
        End Try
    End Sub 'Main

    Public Shared Sub DisplayTypeHandle(ByVal myTypeHandle As RuntimeTypeHandle)
        ' Get the type from the handle.
        Dim myType As Type = Type.GetTypeFromHandle(myTypeHandle)
        ' Display the type.
        Console.WriteLine(ControlChars.NewLine + "Displaying the type from the handle:" + ControlChars.NewLine)
        Console.WriteLine("The type is {0}.", myType.ToString())
    End Sub 'DisplayTypeHandle
End Class 'Type_TypeHandle

[C#] 
using System;
using System.Reflection;
class MyClass
{
    public int myField = 10;
}

class Type_TypeHandle
{
    public static void Main()
    {
        try
        {
            MyClass myClass = new MyClass();

            // Get the type of MyClass.
            Type myClassType = myClass.GetType();

            // Get the runtime handle of MyClass.
            RuntimeTypeHandle myClassHandle = myClassType.TypeHandle;
         
            DisplayTypeHandle(myClassHandle);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: {0}", e.Message );
        }
    }

    public static void DisplayTypeHandle(RuntimeTypeHandle myTypeHandle)
    {
        // Get the type from the handle.
        Type myType = Type.GetTypeFromHandle(myTypeHandle);      
        // Display the type.
        Console.WriteLine("\nDisplaying the type from the handle:\n");
        Console.WriteLine("The type is {0}.", myType.ToString());
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;

__gc class MyClass {
public:
   int  myField;
};

void DisplayTypeHandle(RuntimeTypeHandle myTypeHandle) {
   // Get the type from the handle.
   Type*  myType = Type::GetTypeFromHandle(myTypeHandle);
   // Display the type.
   Console::WriteLine(S"\nDisplaying the type from the handle:\n");
   Console::WriteLine(S"The type is {0}.", myType);
}

int main() {
   try {
      MyClass* myClass = new MyClass();

      // Get the type of MyClass.
      Type*  myClassType = myClass->GetType();

      // Get the runtime handle of MyClass.
      RuntimeTypeHandle myClassHandle = myClassType->TypeHandle;

      DisplayTypeHandle(myClassHandle);
   } catch (Exception* e) {
      Console::WriteLine(S"Exception: {0}", e->Message);
   }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: 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, Common Language Infrastructure (CLI) Standard

参照

Type クラス | Type メンバ | System 名前空間 | RuntimeTypeHandle | GetTypeHandle | GetTypeFromHandle