知道如何初始化指向“混合”类实例中的方法的 .NET 委托吗?
我有这样的“混合”C++ 类:
class CppMixClass
{
public:
CppMixClass(void){
dotNETclass->StateChanged += gcnew DotNetClass::ServiceStateEventHandler(&UpdateHealthState);
}
~CppMixClass(void);
void UpdateState(System::Object^ sender, DotNetClass::StateEventArgs^ e){
//doSmth
}
}
DotNetClass 是用 C# 实现的,方法声明可以使用委托。此行生成错误:
dotNETclass->StateChanged += gcnew DotNetClass::ServiceStateEventHandler(&UpdateHealthState);
error C2276: '&' : illegal operation on bound member function expression
有人对问题有线索吗?也许因为 CppMixClass 类不是纯 .NET (ref) 类?
当 UpdateHealthState 是静态方法时,我让它工作,但我需要指向实例方法的指针。
我尝试过:
dotNETclass->StateChanged += gcnew DotNetClass::ServiceStateEventHandler(this, &UpdateHealthState);
但这显然不起作用,因为这不是指向 .NET (ref) 类 (System::Object) 的指针(句柄)。
ServiceStateEventHandler 在 C# 中定义为:
public delegate void ServiceStateEventHandler(object sender, ServiceStateEventArgs e);
感谢您阅读本文:)