Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

458
Vistas
Invoque MethodInfo con void* como parámetro

El problema

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*'.

La pregunta

¿Cómo invocamos un MethodInfo con un vacío puro* como parámetro? Me alegro de cualquier ayuda sobre este tema!

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda