Bonjour à tous
J'ai un petit problème concernant la gestion de delegate sur des eventHandler.
Explication :
Je charge dynamiquement dans un fichier common.cs (classe baseClass) une assembly (chargement dynamique car l'assembly chargée dépendra d'un choix effectué dans baseClass)
Je charge donc le tout :
Code :
- Assembly DriverAssembly
- Type typeDriver
- Object DriverSerie
- DriverAssembly = Assembly.LoadFrom(MyAssembliesPath + MyAssembliesName+ ".dll" );
- typeDriver = DriverAssembly.GetType(MyAssembliesName + MyLoadedClass);
- DriverSerie = Activator.CreateInstance(typeDriver);
|
Je recherche ensuite les méthodes qui m'interessent dans cette assembly, par exemple "write", en spécifiant les parametres de la fonction
Code :
- MethodInfo Write
- Type[] paramWrite = new Type[1];
- paramWrite1[0] = typeof(string);
- WriteHandler = typeDriver.GetMethod("Write",paramWrite);
|
Ici, c'est OK. Ca fonctionne, lorsque j'execute le tout ma fonction "Write" pointe bien sur celle de l'assembly.
Maintenant, je veux aussi charger non pas une méthode mais des eventHandler et events.
Et là c'est un échec.
J'ai procédé de manière similaire
Code :
- EventInfo Evt_RecptHandler; // EventInfo au lieu de MethodInfo
- Evt_RecptHandler = typeDriver.GetEvent("Evt_Recpt" ); // chargement de l'evenement "Evt_Recpt"
|
Je veux ensuite faire un "AddEventHandler" sur "Evt_RecptHandler".
Les parametres de "AddEventHandler" sont :
- <object target> : source de l'evenement -> je donne en parametre mon "DriverSerie" (voir plus haut)
- <System.Delegate handler> : méthodes qui sont appellées lorsque la cible déclenche l'evenement
J'ai donc un truc du genre :
Code :
- Evt_RecptHandler.AddEventHandler(DriverSerie,handler); // pour le handler, cf ci dessous !
|
Et c'est là que le bas blesse, sur ce dernier parametre "handler".
En effet je tente de recuperer mon handler :
Code :
- Delegate handler
- handler = Delegate.CreateDelegate(Evt_RecptHandler.EventHandlerType,this,"SerialDriver_DataReceived" );
|
Compil ok, mais à l'execution une bien belle exception :"{"Erreur de liaison avec la méthode cible." }"
Voila, si qq a déja trempé dans les delegate et à une idée à ce sujet, je suis prenneur