Hay un método interno que necesito invocar a través de la reflexión. Se parece a esto...
internal void SetComponentDataRaw(Entity entity, int typeIndex, void* data, int size)Obtener MethodInfo no es un problema, pero llamarlo sí lo es. Necesito pasarle un puntero de vacío, pero ese puntero de vacío NO se puede convertir en un objeto. Cuando encajo ese puntero, recibo un error más adelante que me dice que no puede desempaquetarlo correctamente.
var SetComponentDataRawInfo = typeof(...).GetMethod("SetComponentDataRaw", ...); var entity = someEntityToPass; var cmp = new StructToPassToTheMethodAsAPointer(); // My first attempt, not possible to cast unsafe { var handle = GCHandle.Alloc(cmp, GCHandleType.Pinned); var adress = handle.AddrOfPinnedObject(); var ptr = adress.ToPointer(); var sizeOfComponent = UnsafeUtility.SizeOf(type); var parameters = new [] {entity, cmpType.TypeIndex, (object)ptr, sizeOfComponent}; // (object)ptr not possible SetComponentDataRawInfo.Invoke(em, parameters); handle.Free(); } // Second attempt unsafe { var handle = GCHandle.Alloc(cmp, GCHandleType.Pinned); var adress = handle.AddrOfPinnedObject(); var ptr = adress.ToPointer(); var sizeOfComponent = UnsafeUtility.SizeOf(type); var parameters = new [] {entity, cmpType.TypeIndex, Pointer.Box(ptr, typeof(void*)), sizeOfComponent}; SetComponentDataRawInfo.Invoke(em, parameters); handle.Free(); } El segundo intento puede invocar el método... pero recibo la siguiente excepción: ArgumentException: Object of type 'System.Reflection.Pointer' cannot be converted to type 'System.Void*'.
¿Cómo invocamos un MethodInfo con un vacío puro* como parámetro? Me alegro de cualquier ayuda sobre este tema!