Tôi đang làm việc trên một ứng dụng đang nhúng Mono và tôi muốn tăng sự kiện từ lớp C++ vào lớp C#. Dưới đây là những gì tôi có:Nhúng Mono: Làm thế nào để bạn nâng cao một sự kiện trong 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);
}
Tuy nhiên, raiseMethod luôn trở lại như NULL. Nhìn vào cấu trúc của MonoEvent, có vẻ như các phương thức thêm và xóa đã được phổ biến, nhưng không phải là tăng? Có điều gì đặc biệt tôi phải làm để làm việc này không?
EDIT: Nếu nó quan trọng, đây là hình thức (cơ bản) của đại biểu, lớp và sự kiện tôi đang sử dụng trong lớp C#.
public delegate void MyHandler(uint id);
public class SimpleComponent : NativeComponent
{
public event MyHandler OnEnter;
public event MyHandler OnExit;
}
Nope. Thông qua gỡ lỗi tôi đã xác minh tôi đang nhận được sự kiện trở lại chính xác. Chỉ mono_event_get_raise_method trả về null. get_add_method và get_remove_method giá trị trả lại. – Jeff
@Jeff đã cập nhật câu trả lời của tôi – Krizz