Überprüfen einer MethodInfo für einen Delegaten

8

Wie kann ich feststellen, ob eine MethodInfo zu einem bestimmten Delegattyp passt?

%Vor%

Bearbeiten: Ich habe ein MethodInfo-Objekt erhalten und möchte wissen, ob es zur Delegate-Schnittstelle passt. Abgesehen von dem offensichtlichen

%Vor%     
Sven Hecht 08.02.2010, 11:03
quelle

1 Antwort

11

Wenn method eine statische Methode ist:

%Vor%

Wenn method eine Instanzmethode ist:

%Vor%

(Leider brauchen Sie in diesem Fall eine Instanz, weil Delegate.CreateDelegate versuchen wird, eine Delegateninstanz zu binden, obwohl in diesem Fall alles darauf ankommt, ob der Delegat erstellt werden könnte oder nicht.)

In beiden Fällen besteht der Trick hauptsächlich darin, .NET zu bitten, einen Delegaten des gewünschten Typs aus der MethodInfo zu erstellen, aber null zurückzugeben, anstatt eine Ausnahme auszulösen, wenn die Methode die falsche Signatur hat. Dann testet man gegen Null, ob der Delegierte die richtige Signatur hat oder nicht.

Beachten Sie, dass, weil dies tatsächlich versucht, den Delegaten zu erstellen, es auch alle Delegaten Varianzregeln für Sie behandelt (z. B. wenn die Methode Rückgabetyp kompatibel ist, aber nicht genau das gleiche wie die Delegate Rückgabetyp).

    
itowlson 08.02.2010, 11:17
quelle

Tags und Links