Weiter zu my precedent question, ich möchte Parameter an die Methode "WriteTrace" übergeben. Aber ich weiß nicht, wie ich das machen soll.Wie man Parameter zu einer Methode durch Reflexion übergibt
Hier ist der eigentliche Code:
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);
}
}
Jetzt möchte ich einige Infos in der Spur bekommen:
- Der Name des Steuer
Der Name der Veranstaltung
public void WriteTrace(object sender, EventArgs e) { Console.WriteLine("Control : " + e.ControlName + "Event : " + e.EventName); }
Erstelle ich eine Klasse TraceEventArgs, die von EventArgs mit diesen Informationen abgeleitet ist? Wie diese Informationen in der Methode SubscribeEvent?
Danke für Ihre Hilfe,
Florian
EDIT
Sorry, hier nun der Verweis auf "meine vorherige Frage": Subscribe to an event with Reflection
Ich vergesse einen Link zu meiner vorherigen Frage hinzuzufügen. Ich nehme an, dass ein übergebenes Steuerelement ein Formular (für Tests) ist: "Ich möchte, dass diese Klasse ein Ereignis abonniert, zum Beispiel das Ladeereignis eines Formularsteuerelements. Das Steuerelement und das Ereignis werden dynamisch definiert. Daher möchte ich Reflektion verwenden " Sorry für die Verwirrung – Florian
Aaah, Gotcha. Bearbeitet. – thecoop
Vielen Dank !! – Florian