Erhalte nur Methoden mit spezifischer Signatur aus Type.GetMethods ()

7

Ich möchte alle Methoden eines Typs mit einer bestimmten Methodensignatur auflisten.

Wenn ein Typ beispielsweise einige öffentliche Methoden enthält: öffentliches void meth1 (int i); public void meth2 (int i, string s); public void meth3 (int i, String s); public int meth4 (int i, Zeichenkette s);

Ich möchte alle Methoden auflisten, die einen int als ersten und einen String als zweiten Parameter erwarten und void zurückgeben.

Wie kann ich das tun?

    
mabstrei 01.03.2011, 09:04
quelle

5 Antworten

12

Sie können etwas wie folgt verwenden:

%Vor%

Und benutze es so:

%Vor%     
EvgK 01.03.2011, 09:21
quelle
6
%Vor%     
James Gaunt 01.03.2011 09:18
quelle
4

Sie müssen alle MethodInfo s selbst überprüfen. Wenn Sie MethodInfo.GetParameters() aufrufen, erhalten Sie eine Sammlung von ParameterInfo -Objekten, die ihrerseits eine Eigenschaft ParameterType haben.

Dasselbe gilt für den Rückgabetyp: Überprüfen Sie die Eigenschaft ReturnType von MethodInfo .

    
C.Evenhuis 01.03.2011 09:07
quelle
1

Gegeben diese Klasse:

%Vor%

Ein bisschen Reflection und LINQ kann verwendet werden:

%Vor%

oder die andere Syntax (was in diesem Fall eigentlich schöner ist)

%Vor%

Test:

%Vor%

Ausgabe:

%Vor%     
Jamiec 01.03.2011 09:13
quelle
0

Dies ist die Erweiterungsmethode, um die Antwort von EvgK zu verbessern.

%Vor%

Benutze es wie

%Vor%     
Dasith Wijes 10.11.2016 04:59
quelle

Tags und Links