En plus de my precedent question, je souhaite passer des paramètres à la méthode "WriteTrace". Mais je ne sais pas comment faire ça.Comment passer des paramètres à une méthode par réflexion
Voici le code actuel:
public class Trace
{
public void WriteTrace(object sender, EventArgs e)
{
Console.WriteLine("Trace !");
}
}
public void SubscribeEvent(Control control)
{
if (typeof(Control).IsAssignableFrom(control.GetType()))
{
Trace test = this;
MethodInfo method = typeof(Trace).GetMethod("WriteTrace");
EventInfo eventInfo = control.GetType().GetEvent("Load");
// Create the delegate on the test class because that's where the
// method is. This corresponds with `new EventHandler(test.WriteTrace)`.
Delegate handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, test, method);
// Assign the eventhandler. This corresponds with `control.Load += ...`.
eventInfo.AddEventHandler(control, handler);
}
}
Maintenant, je veux obtenir des infos dans la trace:
- Le nom du contrôle
Le nom de l'événement
public void WriteTrace(object sender, EventArgs e) { Console.WriteLine("Control : " + e.ControlName + "Event : " + e.EventName); }
Est-ce que je crée une classe TraceEventArgs dérivée de EventArgs avec ces informations? Comment passer ces infos dans la méthode SubscribeEvent?
Merci pour votre aide,
Florian
EDIT
Désolé, voici maintenant la référence à "ma question précédente": Subscribe to an event with Reflection
J'oublie d'ajouter un lien à ma question précédente. Je suppose qu'un contrôle passé est un formulaire (pour les tests): "Je veux que cette classe s'abonne à un événement, par exemple l'événement de chargement d'un contrôle de formulaire Le contrôle et l'événement sont définis dynamiquement donc je veux utiliser la réflexion " Désolé pour la confusion – Florian
Aaah, gotcha. Édité. – thecoop
Merci beaucoup! – Florian