public override ClrType GetRuntimeType(ulong obj) { if (!IsRuntimeType) { return(null); } ClrInstanceField field = GetFieldByName("m_handle"); if (field == null) { return(null); } ulong methodTable = 0; if (field.ElementType == ClrElementType.NativeInt) { methodTable = (ulong)(long)field.GetValue(obj); } else if (field.ElementType == ClrElementType.Struct) { ClrInstanceField ptrField = field.Type.GetFieldByName("m_ptr"); methodTable = (ulong)(long)ptrField.GetValue(field.GetAddress(obj, false), true); } return(DesktopHeap.GetTypeByMethodTable(methodTable, 0, obj)); }