Verwenden Sie die Variable anstelle des Funktionsnamens

7

Ich verwende gerade Folgendes:

%Vor%

Es funktioniert, aber es fühlt sich irgendwie falsch an. Der Python-Weg wäre eher so:

%Vor%

Ich habe wirklich Schwierigkeiten, mir vorzustellen, dass C # so etwas nicht kann. Es kann sein, dass meine Google-Fähigkeiten schlecht sind, aber ich kann es nicht herausfinden.

LÖSUNG

%Vor%

%Vor%     
MTeck 06.03.2012, 15:02
quelle

6 Antworten

8

Sie können dies mit einigen Vorbereitungen tun, indem Sie Delegaten wie folgt verwenden:

%Vor%

Wenn es Zeit ist, Ihre Aktion aufzurufen, tun Sie dies wie folgt:

%Vor%     
dasblinkenlight 06.03.2012, 15:06
quelle
6

Sie können einen Delegaten verwenden:

%Vor%     
Guffa 06.03.2012 15:08
quelle
4

Sie können Dictionary der Delegierten als einfachsten Weg beibehalten:

%Vor%

Dann nenne es so:

%Vor%

Je nachdem, was Ihre Methoden zurückgeben, müssen Sie möglicherweise auch den Typ des Delegaten ändern (zum Beispiel Action<string> bedeutet void something(string someparam) als Methodensignatur).

    
Ry︁ 06.03.2012 15:07
quelle
2

Ich glaube, was Sie suchen, wird ein Refactoring Ihres Codes benötigen.

Alle Ihre "Fälle" (TextFile, MSOfficeWordFile, MSOfficeExcelFile, PdfFile) sollten ihre eigenen Klassen sein, die eine einzelne Schnittstelle implementieren.

Ihre Schnittstelle sollte so etwas wie "IReadableFile" heißen und eine Methode namens "ReadFile ()" angeben.

Jede Klasse sollte ihre eigene Implementierung von "ReadFile ()"

haben

Beispiel:

%Vor% %Vor% %Vor%

Code kann einige Fehler enthalten, aber ich hoffe, Sie bekommen die Idee.

    
Khan 06.03.2012 15:20
quelle
1

Sie können auch Reflektion verwenden (wenn Sie mit den verschiedenen Overheads zufrieden sind, die Sie mitbringen können) Überprüfen Sie diese Lösung

Hoffnung, die geholfen hat

    
Kharaone 06.03.2012 15:14
quelle
0

Wenn Sie nach einer Möglichkeit suchen, die explizite Zuordnung von Methodennamen zu String-Werten zu vermeiden, können Sie die Reflektion für den dynamischen Methodenaufruf verwenden (dies setzt voraus, dass filetype.Value vom Typ String ist)

%Vor%     
Red Taz 06.03.2012 15:24
quelle

Tags und Links