私はMonoを埋め込んでいるアプリケーションで作業していますが、C++レイヤーからC#レイヤーにイベントを発生させたいと思います。ここに私が持っているもの:Embedded Mono: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);
}
ただし、raiseMethodは常にNULLに戻ります。 MonoEventの構造を見ると、addメソッドとremoveメソッドが実装されたように見えますが、raiseは表示されません。これを機能させるために何か特別なことがありますか?
EDIT:重要なのは、C#レイヤーで使用しているデリゲート、クラス、イベントの(基本的な)フォームです。
public delegate void MyHandler(uint id);
public class SimpleComponent : NativeComponent
{
public event MyHandler OnEnter;
public event MyHandler OnExit;
}
いいえでモノ方法をつかん。デバッグを通して、私はイベントを正しく戻していることを確認しました。単なるmono_event_get_raise_methodはnullを返します。 get_add_methodおよびget_remove_methodは値を返します。 – Jeff
@Jeffは私の答えを – Krizz