PPP*_*ira 2 c# c++ managed-c++ c++-cli visual-c++
您好,我正在尝试在我的托管 C++ dll 中实现 C# 接口,如下所示:
public ref class MyClass : public IMyInterface
{
// Inherited via IMyInterface
virtual event EventHandler<MyEventArgs ^> ^ MyLoadedEvent;
public:
virtual event EventHandler<MyEventArgs ^> MyLoadedEvent
{
void add(MyEventArgs ^ f)
{
// some magic
}
void remove(MyEventArgs ^ f)
{
// some magic
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不断收到两个错误:
1) 事件类型必须是句柄到委托类型
2) 类未能实现在...dll 中声明的接口成员函数“MyLoadedEvent::add”
我在实现中缺少什么或者实现接口事件的正确方法是什么?
谢谢!
第一个错误是因为缺少 ^ 帽子,第二个错误是没有命名您实现的接口方法。假设接口事件被命名为“Loaded”,正确的语法应该类似于:
public ref class MyClass : IMyInterface {
EventHandler<MyEventArgs^>^ MyLoadedEventBackingStore;
public:
virtual event EventHandler<MyEventArgs^>^ MyLoadedEvent {
void add(EventHandler<MyEventArgs^>^ arg) = IMyInterface::Loaded::add {
MyLoadedEventBackingStore += arg;
}
void remove(EventHandler<MyEventArgs^>^ arg) = IMyInterface::Loaded::remove {
MyLoadedEventBackingStore -= arg;
}
}
};
Run Code Online (Sandbox Code Playgroud)