Übergeben Sie generische Methode als Parameter an eine andere Methode

8

Dies wurde schon einmal gefragt (glaube ich), aber nachdem ich die vorherigen Antworten durchgesehen habe, konnte ich immer noch nicht herausfinden, was ich brauche.

Sagen wir, ich habe eine private Methode wie:

%Vor%

Was ich so benutzen kann:

%Vor%

Wie kann ich dann meine GenericMethod an eine andere Methode übergeben, damit ich sie dann in dieser Methode ähnlich aufrufen kann? z.B.:

%Vor%

Ich kann einfach nicht meinen Kopf herumkommen! Was muss ich als generische Parameter für Action in AnotherMethod ?!

angeben?     
MadSkunk 06.08.2014, 21:58
quelle

2 Antworten

7

Sie müssen in AnotherMethod nicht einen einzelnen Delegaten eines bestimmten Typs übergeben, sondern eine Sache, die Delegierte erzeugt. Ich denke, das kann nur mit Reflektion oder dynamischen Typen geschehen:

%Vor%

Beachten Sie, dass (t, u) => GenericMethod(t, u) nicht durch nur GenericMethod ersetzt werden kann.

    
Athari 06.08.2014, 22:00
quelle
2

Ich wollte nur eine andere Lösung posten, die ich vor allem mit Caching für eine Weile nützlich fand. Wenn ich ein Get from Cache mache und das Cache-Element nicht existiert, rufe ich die bereitgestellte Funktion auf, um die Daten zu erhalten, zwischenzuspeichern und zurückzugeben. Aber das kann auch auf Ihre spezifische Art und Weise verwendet werden.

Ihre andere Methode würde eine ähnliche Signatur benötigen, wobei getItemCallback die GenericMethod() ist, die Sie ausführen möchten. Das Beispiel wurde aus Platzgründen entfernt.

%Vor%

Dann würden Sie Ihr AnotherMethod() wie folgt aufrufen

%Vor%

Ich weiß es etwa einige Monate später, aber vielleicht wird es der nächsten Person helfen, da ich vergessen habe, wie man das macht und keine ähnliche Antwort auf SO finden kann.

    
ppumkin 26.09.2015 08:33
quelle

Tags und Links