Sto lavorando a un'applicazione che incorpora Mono e mi piacerebbe generare un evento dal livello C++ nel livello C#. Ecco cosa ho:Mono incorporato: come si genera un evento in 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);
}
Tuttavia, raiseMethod torna sempre come NULL. Osservando la struttura del MonoEvent, sembra che siano stati popolati i metodi add e remove, ma non il raise? C'è qualcosa di speciale che devo fare per farlo funzionare?
MODIFICA: Se è importante, ecco la forma (di base) del delegato, della classe e degli eventi che sto usando nel livello C#.
public delegate void MyHandler(uint id);
public class SimpleComponent : NativeComponent
{
public event MyHandler OnEnter;
public event MyHandler OnExit;
}
Nope. Attraverso il debug ho verificato che sto recuperando l'evento correttamente. Solo mono_event_get_raise_method restituisce null. get_add_method e get_remove_method valori di ritorno. – Jeff
@Jeff ha aggiornato la mia risposta – Krizz