C #: Gibt einen Delegaten mit einem Objekt und einem Methodennamen zurück

8

Angenommen, mir wird ein Objekt und eine Zeichenfolge mit einem Methodennamen zugewiesen. Wie kann ich einen Delegaten an diese Methode (dieser Methode?) zurückgeben?

Beispiel:

%Vor%

Vielen Dank im Voraus.

Noch eine Sache - Ich möchte wirklich keine switch-Anweisung verwenden, obwohl es funktionieren würde, aber eine Menge Code.

    
Austin Salonen 23.04.2009, 19:07
quelle

3 Antworten

20

Sie müssen Type.GetMethod verwenden, um das Richtige zu erhalten Methode und Delegate.CreateDelegate , um MethodInfo in einen Delegaten zu konvertieren. Vollständiges Beispiel:

%Vor%

Der Kommentar von Mehrdad ist jedoch ein großartiger - wenn die Ausnahmen, die durch diese Überladung ausgelöst werden, Delegate.CreateDelegate sind in Ordnung, Sie können GetByName deutlich vereinfachen:

%Vor%

Ich habe das selbst nie benutzt, weil ich normalerweise andere Teile der Überprüfung mache, nachdem ich das MethodInfo explizit gefunden habe - aber wo es passt, ist das wirklich praktisch:)

    
Jon Skeet 23.04.2009, 19:10
quelle
3
%Vor%     
Mehrdad Afshari 23.04.2009 19:12
quelle
1

Noch einfacher ist es zu verwenden:

%Vor%

Beachten Sie, dass CreateDelegate eine Überladung aufweist, die den Methodenname für Sie übernimmt. Dies wurde mit .net 3.5 Sp1

gemacht     
JoshBerke 23.04.2009 19:23
quelle

Tags und Links