Une idée de comment initialiser le délégué .NET qui pointe vers la méthode de l'instance de classe 'mixte'?Est-il possible que la classe native utilise l'événement .NET?
je classe 'mixte' C++ comme ceci:
class CppMixClass
{
public:
CppMixClass(void){
dotNETclass->StateChanged += gcnew DotNetClass::ServiceStateEventHandler(&UpdateHealthState);
}
~CppMixClass(void);
void UpdateState(System::Object^ sender, DotNetClass::StateEventArgs^ e){
//doSmth
}
}
DotNetClass est implémenté en C#, et la déclaration Méthode est OK avec délégué. Cette ligne génère l'erreur:
dotNETclass->StateChanged += gcnew DotNetClass::ServiceStateEventHandler(&UpdateHealthState);
error C2276: '&' : illegal operation on bound member function expression
Quelqu'un a un indice d'un problème? Peut-être que la classe CppMixClass n'est pas une pure classe .NET (ref)?
J'ai obtenu ce qui fonctionne lorsque UpdateHealthState est une méthode statique, mais j'ai besoin d'un pointeur vers la méthode d'instance.
J'ai essayé smth comme:
dotNETclass->StateChanged += gcnew DotNetClass::ServiceStateEventHandler(this, &UpdateHealthState);
Mais cela ne fonctionne évidemment pas coz ce pointeur est pas (poignée) à la classe .NET (ref), (System :: Object).
ServiceStateEventHandler est défini en C# comme:
public delegate void ServiceStateEventHandler(object sender, ServiceStateEventArgs e);
Thanx pour la lecture de ce :)
Nice - merci pour l'affichage - je ne savais pas que –