是否可以System.Type
从IntPtr
类型句柄中获取对象(可以通过获取)?Type.TypeHandle.Value
例:
TypeFromIntPtr(typeof(object).TypeHandle.Value) == typeof(object) //true
Run Code Online (Sandbox Code Playgroud)
编辑:我很高兴有许多有用的人认为我正在尝试解决其他问题,但我正在寻找这个特定问题的答案,我对此非常肯定.我很抱歉没有首先说明它.
编辑#2:类型句柄是一个指针,指向CLR中表示RTTI的结构.我不想从这个结构中读取数据,我想要一种为此返回托管Type
对象的方法.我需要将指针"转换"为对象.
我们通常不允许任何人射击他们的脚,但你似乎坚持你需要,而你知道你在做什么.
这是你射脚的方法:
private static Type GetTypeFromHandle(IntPtr handle)
{
var method = typeof(Type).GetMethod("GetTypeFromHandleUnsafe", BindingFlags.Static | BindingFlags.NonPublic);
return (Type)method.Invoke(null, new object[] { handle });
}
private static void Main(string[] args)
{
IntPtr handle = typeof(string).TypeHandle.Value;//Obtain handle somehow
Type type = GetTypeFromHandle(handle);
}
Run Code Online (Sandbox Code Playgroud)