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?
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:
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>
:
Wenn Sie Ihr Foo()
methdod wie folgt aufrufen:
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%