Есть идеи, как инициализировать делегат .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);
Спасибо за чтение:)