Estoy trabajando en una aplicación que está incorporando Mono, y me gustaría plantear un evento desde la capa C++ en la capa C#. Esto es lo que tengo:Mono incrustado: ¿cómo se plantea un evento en C++?
void* itr(NULL);
MonoEvent* monoEvent;
while(monoEvent= mono_class_get_events(klass, &itr))
{
if(0 == strcmp(eventName, mono_event_get_name(monoEvent)))
raiseMethod = mono_event_get_raise_method(monoEvent);
}
Sin embargo, raiseMethod siempre vuelve como NULL. Al observar la estructura del MonoEvent, parece que se completaron los métodos de agregar y quitar, pero no el aumento. ¿Hay algo especial que deba hacer para que esto funcione?
EDITAR: Si es importante, aquí está la forma (básica) del delegado, la clase y los eventos que estoy usando en la capa C#.
public delegate void MyHandler(uint id);
public class SimpleComponent : NativeComponent
{
public event MyHandler OnEnter;
public event MyHandler OnExit;
}
Nop. Mediante la depuración, verifiqué que estoy recuperando el evento correctamente. Just mono_event_get_raise_method devuelve null. get_add_method y get_remove_method return values. – Jeff
@Jeff actualizó mi respuesta – Krizz