Type.GetTypeHandle(Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene el identificador para la clase Type de un objeto especificado.
public:
static RuntimeTypeHandle GetTypeHandle(System::Object ^ o);
public static RuntimeTypeHandle GetTypeHandle (object o);
static member GetTypeHandle : obj -> RuntimeTypeHandle
Public Shared Function GetTypeHandle (o As Object) As RuntimeTypeHandle
Parámetros
- o
- Object
Objeto para el que se va a obtener el identificador Type.
Devoluciones
Identificador para la clase Type del objeto Object especificado.
Excepciones
o
es null
.
Ejemplos
En el ejemplo siguiente se define la clase MyClass1
, se obtiene una instancia de ella y se recupera el identificador en tiempo de ejecución del objeto .
using namespace System;
using namespace System::Reflection;
public ref class MyClass1
{
private:
int x;
public:
int MyMethod()
{
return x;
}
};
int main()
{
MyClass1^ myClass1 = gcnew MyClass1;
// Get the RuntimeTypeHandle from an object.
RuntimeTypeHandle myRTHFromObject = Type::GetTypeHandle( myClass1 );
// Get the RuntimeTypeHandle from a type.
RuntimeTypeHandle myRTHFromType = MyClass1::typeid->TypeHandle;
Console::WriteLine( "\nmyRTHFromObject.Value: {0}", myRTHFromObject.Value );
Console::WriteLine( "myRTHFromObject.GetType(): {0}", myRTHFromObject.GetType() );
Console::WriteLine( "Get the type back from the handle..." );
Console::WriteLine( "Type::GetTypeFromHandle(myRTHFromObject): {0}",
Type::GetTypeFromHandle(myRTHFromObject) );
Console::WriteLine( "\nmyRTHFromObject.Equals(myRTHFromType): {0}",
myRTHFromObject.Equals(myRTHFromType) );
Console::WriteLine( "\nmyRTHFromType.Value: {0}", myRTHFromType.Value );
Console::WriteLine( "myRTHFromType.GetType(): {0}", myRTHFromType.GetType() );
Console::WriteLine( "Get the type back from the handle..." );
Console::WriteLine( "Type::GetTypeFromHandle(myRTHFromType): {0}",
Type::GetTypeFromHandle(myRTHFromType) );
}
/* This code example produces output similar to the following:
myRTHFromObject.Value: 3295832
myRTHFromObject.GetType(): System.RuntimeTypeHandle
Get the type back from the handle...
Type::GetTypeFromHandle(myRTHFromObject): MyClass1
myRTHFromObject.Equals(myRTHFromType): True
myRTHFromType.Value: 3295832
myRTHFromType.GetType(): System.RuntimeTypeHandle
Get the type back from the handle...
Type::GetTypeFromHandle(myRTHFromType): MyClass1
*/
using System;
using System.Reflection;
public class MyClass1
{
private int x=0;
public int MyMethod()
{
return x;
}
}
public class MyClass2
{
public static void Main()
{
MyClass1 myClass1 = new MyClass1();
// Get the RuntimeTypeHandle from an object.
RuntimeTypeHandle myRTHFromObject = Type.GetTypeHandle(myClass1);
// Get the RuntimeTypeHandle from a type.
RuntimeTypeHandle myRTHFromType = typeof(MyClass1).TypeHandle;
Console.WriteLine("\nmyRTHFromObject.Value: {0}", myRTHFromObject.Value);
Console.WriteLine("myRTHFromObject.GetType(): {0}", myRTHFromObject.GetType());
Console.WriteLine("Get the type back from the handle...");
Console.WriteLine("Type.GetTypeFromHandle(myRTHFromObject): {0}",
Type.GetTypeFromHandle(myRTHFromObject));
Console.WriteLine("\nmyRTHFromObject.Equals(myRTHFromType): {0}",
myRTHFromObject.Equals(myRTHFromType));
Console.WriteLine("\nmyRTHFromType.Value: {0}", myRTHFromType.Value);
Console.WriteLine("myRTHFromType.GetType(): {0}", myRTHFromType.GetType());
Console.WriteLine("Get the type back from the handle...");
Console.WriteLine("Type.GetTypeFromHandle(myRTHFromType): {0}",
Type.GetTypeFromHandle(myRTHFromType));
}
}
/* This code example produces output similar to the following:
myRTHFromObject.Value: 799464
myRTHFromObject.GetType(): System.RuntimeTypeHandle
Get the type back from the handle...
Type.GetTypeFromHandle(myRTHFromObject): MyClass1
myRTHFromObject.Equals(myRTHFromType): True
myRTHFromType.Value: 799464
myRTHFromType.GetType(): System.RuntimeTypeHandle
Get the type back from the handle...
Type.GetTypeFromHandle(myRTHFromType): MyClass1
*/
open System
type MyClass1() =
let x = 0
member _.MyMethod() =
x
let myClass1 = MyClass1()
// Get the RuntimeTypeHandle from an object.
let myRTHFromObject = Type.GetTypeHandle myClass1
// Get the RuntimeTypeHandle from a type.
let myRTHFromType = typeof<MyClass1>.TypeHandle
printfn $"\nmyRTHFromObject.Value: {myRTHFromObject.Value}"
printfn $"myRTHFromObject.GetType(): {myRTHFromObject.GetType()}"
printfn "Get the type back from the handle..."
printfn $"Type.GetTypeFromHandle(myRTHFromObject): {Type.GetTypeFromHandle myRTHFromObject}"
printfn $"\nmyRTHFromObject.Equals(myRTHFromType): {myRTHFromObject.Equals myRTHFromType}"
printfn $"\nmyRTHFromType.Value: {myRTHFromType.Value}"
printfn $"myRTHFromType.GetType(): {myRTHFromType.GetType()}"
printfn "Get the type back from the handle..."
printfn $"Type.GetTypeFromHandle(myRTHFromType): {Type.GetTypeFromHandle myRTHFromType}"
// This code example produces output similar to the following:
// myRTHFromObject.Value: 799464
// myRTHFromObject.GetType(): System.RuntimeTypeHandle
// Get the type back from the handle...
// Type.GetTypeFromHandle(myRTHFromObject): MyClass1
//
// myRTHFromObject.Equals(myRTHFromType): True
//
// myRTHFromType.Value: 799464
// myRTHFromType.GetType(): System.RuntimeTypeHandle
// Get the type back from the handle...
// Type.GetTypeFromHandle(myRTHFromType): MyClass1
Imports System.Reflection
Public Class MyClass1
Private x As Integer = 0
Public Function MyMethod() As Integer
Return x
End Function 'MyMethod
End Class
Public Class MyClass2
Public Shared Sub Main()
Dim myClass1 As New MyClass1()
' Get the RuntimeTypeHandle from an object.
Dim myRTHFromObject As RuntimeTypeHandle = Type.GetTypeHandle(myClass1)
' Get the RuntimeTypeHandle from a type.
Dim myRTHFromType As RuntimeTypeHandle = GetType(MyClass1).TypeHandle
Console.WriteLine(vbLf & "myRTHFromObject.Value: {0}", _
myRTHFromObject.Value)
Console.WriteLine("myRTHFromObject.GetType(): {0}", _
myRTHFromObject.GetType())
Console.WriteLine("Get the type back from the handle...")
Console.WriteLine("Type.GetTypeFromHandle(myRTHFromObject): {0}", _
Type.GetTypeFromHandle(myRTHFromObject))
Console.WriteLine(vbLf & "myRTHFromObject.Equals(myRTHFromType): {0}", _
myRTHFromObject.Equals(myRTHFromType))
Console.WriteLine(vbLf & "myRTHFromType.Value: {0}", _
myRTHFromType.Value)
Console.WriteLine("myRTHFromType.GetType(): {0}", _
myRTHFromType.GetType())
Console.WriteLine("Get the type back from the handle...")
Console.WriteLine("Type.GetTypeFromHandle(myRTHFromType): {0}", _
Type.GetTypeFromHandle(myRTHFromType))
End Sub
End Class
' This code example produces output similar to the following:
'
'myRTHFromObject.Value: 7549720
'myRTHFromObject.GetType(): System.RuntimeTypeHandle
'Get the type back from the handle...
'Type.GetTypeFromHandle(myRTHFromObject): MyClass1
'
'myRTHFromObject.Equals(myRTHFromType): True
'
'myRTHFromType.Value: 7549720
'myRTHFromType.GetType(): System.RuntimeTypeHandle
'Get the type back from the handle...
'Type.GetTypeFromHandle(myRTHFromType): MyClass1
Comentarios
Los identificadores solo son válidos en el dominio de aplicación en el que se obtuvieron.