Aktionsdelegierter. Wie man Methodeninfos erhält, die im Delegierten genannt werden?

8

Ich muss MethodInfo für die in Action delegate aufgerufene Methode abrufen, um zu überprüfen, ob die in Action aufgerufenen Methoden MyCustomAttibute

haben %Vor%

Die Foo-Methode sollte wie folgt aufgerufen werden können:

%Vor%

In Foo-Methode möchte ich sicherstellen, dass Method1 und Method2 MyCustomAttribute hat. Jedoch gibt action.Method mir die MethodInfo, die die Aktion des Delegaten ist, was passiert, wenn Lambda-Ausdruck verwendet wird. Gibt es eine Möglichkeit Method1 und Method2 MethodInfo zu erhalten?

    
Joanna 06.06.2012, 10:51
quelle

2 Antworten

5

Wie in den Kommentaren erwähnt, ist Expression<T> wahrscheinlich der beste Weg, dies zu erreichen. Es erfordert jedoch zur Laufzeit ein Compile() , also sollte es eine Leistungsprofilierung sein.

Mit Expression<T> kannst du leicht auf Methodeninfo wie folgt zugreifen:

%Vor%

Aber bevor Sie die Aktion ausführen, müssen Sie Folgendes tun:

%Vor%

BEARBEITEN Ach ja, ich habe vergessen, wie ich auf das Kundenattribut zugreifen kann. Du würdest es so machen:

%Vor%

BEISPIEL Im Folgenden finden Sie ein Beispiel für die Übergabe von verketteten Methodenaufrufen an Expression<Action> :

%Vor%     
Davin Tryon 06.06.2012 11:04
quelle
4

Wenn Sie Ihr Foo() methdod wie folgt aufrufen:

%Vor%

Ihr Code funktioniert wie erwartet (void Methoden sind Aktionen). Nebenbei bemerkt, ich denke, dass das "Verketten" von Methodenaufrufen tatsächlich zählt, da Sie nur den letzten Durchlauf durchführen.

Vollständige Probe, die das Verhalten demonstriert:

%Vor%     
Alex 06.06.2012 11:50
quelle

Tags und Links