Können Sie eine allgemeine Funktionalität aus diesen beiden Methoden umgestalten?

7

Ich habe zwei Methoden, die den Text oder das Tag der darunter liegenden Checkboxen im Grunde als CSV-Strings konvertieren.

Diese zwei Methoden

  • GetSelectedTextAsCsv ()
  • GetTagAsCsv ()

unterscheiden sich nur durch die Eigenschaft , um den Wert von SelectedCheckBoxes , der vom Typ IList<CheckBox>

ist, zu extrahieren %Vor%

Ich habe versucht, eine Methode zu extrahieren, die Func<T, TResult> zurückgibt, bin mir aber nicht sicher, wie ich das schaffen kann. Mein armer Versuch war wie der folgende, aber ich kann nicht herausfinden, wie man den Eigenschaftsteil extrahiert, wie gezeigt im Kommentar innerhalb ConvertToCsv()

%Vor%

Wenn ich auf einer falschen Spur bin, würden Sie mir bitte raten, wie ich den obigen Code umgestalten kann, um eine übliche Methode zu verwenden?

[UPDATE 1] Hier ist die Kombination der Antworten von Brian und Jon

%Vor%

[UPDATE 2] Version 2

%Vor%

[UPDATE 3] Der Parameter GetAsCsv() wurde als geschlossenes generisches Element von CheckBox und string

erstellt
  

Func<CheckBox, T> bis Func<CheckBox, string> .

Damit konnte ich GetAsCsv() noch einfacher und lesbarer machen.

%Vor%     
Sung 09.04.2009, 18:55
quelle

5 Antworten

22
%Vor%

Dann:

%Vor%     
Brian Genisio 09.04.2009, 18:58
quelle
19

Ich würde stattdessen string.Join verwenden:

%Vor%

Sicher, du könntest das in eine Methode einbauen, aber ich würde wahrscheinlich nicht nur zwei Anrufe machen.

Wenn Sie das wollten, so würde es mit Brians Vorlage aussehen:

%Vor%     
Jon Skeet 09.04.2009 19:01
quelle
2

Sie könnten ein Lambda verwenden:

%Vor%     
Gabe Moothart 09.04.2009 19:02
quelle
1

Ich würde nur eine kurze Erweiterungsmethode um IEnumerable string schreiben, die ein Trennzeichen verwendet:

%Vor%

dann können Sie tun:

%Vor%     
meandmycode 09.04.2009 19:41
quelle
0

Da die beiden Funktionen für den Getter genau dieselben sind wie außer , sollten Sie hier beginnen: Der bewegliche Teil.

Habe meine C # noch nicht aufgeräumt, aber etwas in der Art von:

%Vor%

sollte funktionieren. Machen Sie auch SelectedCheckBoxes Variable?

    
Daren Thomas 09.04.2009 18:59
quelle

Tags und Links