Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1088 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  CreateDelegate, delegate et gestion des evenements

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

CreateDelegate, delegate et gestion des evenements

n°1194700
Sagoth
:|
Posté le 08-09-2005 à 10:05:55  profilanswer
 

Bonjour à tous  :jap:  
 
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 :
  1. Assembly  DriverAssembly
  2. Type       typeDriver
  3. Object    DriverSerie
  4. DriverAssembly = Assembly.LoadFrom(MyAssembliesPath + MyAssembliesName+ ".dll" );
  5. typeDriver       =  DriverAssembly.GetType(MyAssembliesName + MyLoadedClass);
  6. 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 :
  1. MethodInfo      Write
  2. Type[] paramWrite = new Type[1];
  3. paramWrite1[0]    = typeof(string);
  4. 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 :
  1. EventInfo Evt_RecptHandler;                                     // EventInfo au lieu de MethodInfo
  2. 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 :
  1. 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 :
  1. Delegate handler
  2. 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  :)  
 
 :hello:  :hello:  
 
 
 
 
 

mood
Publicité
Posté le 08-09-2005 à 10:05:55  profilanswer
 

n°1194769
Sagoth
:|
Posté le 08-09-2005 à 11:20:07  profilanswer
 

En poussant un peu le probleme vient de la déclaration de ma fonction "SerialDriver_DataReceived".  :jap:  
 
J'ai essayé une surcharge de  

Code :
  1. Delegate.CreateDelegate(Evt_RecptHandler.EventHandlerType,this,"SerialDriver_DataReceived" );


 
qui a la place de "this" (instance de la classe contenant la fonction) prend un MethodInfo de la fonction cible.
 
Ainsi j'ai tenté

Code :
  1. MethodInfo inf = this.GetType().GetMethod("SerialDriver_DataReceived" )
  2. Delegate.CreateDelegate(Evt_RecptHandler.EventHandlerType,inf);


 
Compil Ok, et en compilant le code je m'appercois que mon "inf" ne prends aucune valeur  :heink:  
Pris d'un doute, je déclare donc ma fct "SerialDriver_DataReceived" en "public".
 
Et là le "inf" est correctement initialisé  :love: , mais autre erreur au niveau du CreateDelegate qui demande une fonction static :pfff: .
Qu'à cela ne tienne, je passe ma fct "SerialDriver_DataReceived" en "public" et "static"  :ange: .
Mais là, le drame  :??:  je retombe sur un inf qui ne s'initialise pas  :sweat:  :sweat:  :sweat:  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  CreateDelegate, delegate et gestion des evenements

 

Sujets relatifs
code source ou de template java pour la gestion des photosgestion d'access via Excel
gestion de licence[VB.NET] Gestion d'une exception
[VB.NET] Gestion d'une exceptionGestion des droits d'utilisateurs sur un forum
Traiter les évènements du clavier et de la souris hors Swingpb avec gestion memoire
Pb Php/sql, gestion d'une liste dynamique 
Plus de sujets relatifs à : CreateDelegate, delegate et gestion des evenements


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR