sebbianco
Messages postés2Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 7 juillet 2006
-
6 juil. 2006 à 19:02
sebbianco
Messages postés2Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 7 juillet 2006
-
7 juil. 2006 à 10:07
Bonjour,
Je vous écris pour essayer de résoudre un petit problème en c#.
L'idée générale de se problème est :
J'ai une
classe A{
event EntreeHandler Entree;
delegate object EntreeHandler(object[] obj);
}
et une classe B{
string Sortie(string s){...}
}
Je voudrais pouvoir matcher mon event et sa fonction associée, et ce de
manière dynamique en utilisant les possibilités de Reflexivité de c#.
J'ai sais que a priori il n'est pas possible de matcher un évènement et
une fonction si elle ne sont pas exactement de même type, mais n'y a t
il pas moyen détourné de faire une telle manip ?
Quelqu'un pourrait-il m'aider dans ce défit, car je ne suis ps un trés trés grand spécialiste de C#.
Par réflexion, je suis déjà parvenu à matcher l'évent et la fonction à
exécuter lorsqu'ils possèdent exactement la même signature (cf
CSharp.cs , méthode link_not_generic).
sebbianco
Messages postés2Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 7 juillet 2006 7 juil. 2006 à 10:07
Le problème est que tout est dynamique, et je ne veux donc ni toucher à la classe A, ni toucher à la classe B mais modifier le code qui fait la liaison entre les deux en utilisant la réflexion (voilà ce que je fais lorsque les signatures de Event et la méthode cible sont identiques) :
private void link_not_generic(String id, EventInfo _ei, MethodInfo _mi)
{
//récupération du type du handler de l'event
Type te = _ei.EventHandlerType;
//récupération de son contructeur
ConstructorInfo ci = te.GetConstructors()[0];
//création du pointeur sur la fonction cible
IntPtr destPtr;
destPtr = _mi.MethodHandle.GetFunctionPointer();
//on récupère la méthode qui permet d'ajouter un gestionnaire d'évènement à un évènement
MethodInfo miadd = _ei.GetAddMethod();