Verwendung von Lambda-Ausdrücken für eine Funktion, die eine Delegatenliste verwendet

8

Ich erstelle eine Erweiterungsmethode für IList, um die angegebenen Eigenschaften eines Objekts als Liste ausgeben und als CSV-String ausgeben zu können. Es sieht so aus:

%Vor%

Im Moment muss ich diese Methode wie folgt nennen:

%Vor%

Gibt es eine bessere Möglichkeit, meine Lambda-Ausdrücke zu übergeben, ohne die Spaltenvariable explizit deklarieren zu müssen, etwa so:

%Vor%     
tarun713 30.09.2014, 21:09
quelle

3 Antworten

6

Anstatt ein List<Func<T, string>> zu verwenden, verwenden Sie Func<T, string>[] und machen es zu einem Parameter-Array :

%Vor%

Dann sollten Sie in der Lage sein anzurufen:

%Vor%

Beachten Sie, dass Sie ab C # 6 schreiben können:

%Vor%

... was bedeuten würde, dass du es auch mit List<Func<T, string>> benutzen könntest.

    
Jon Skeet 30.09.2014, 21:12
quelle
5

Übergeben Sie es als params-Array

%Vor%

Damit können Sie es als

aufrufen %Vor%

Lockern Sie als Vorschlag auch die Rückgabe der Funktion an ein Objekt und rufen Sie anschließend ToString () auf, wenn Sie die Teile zusammensetzen. Auf diese Weise können Sie beliebige Eigenschaften in die CSV-Liste übernehmen, nicht nur Zeichenfolgen.

    
StuffOfInterest 30.09.2014 21:14
quelle
4

Sie könnten Ihre Lambdas als Array übergeben und das Schlüsselwort params verwenden:

%Vor%

Verwendung:

%Vor%     
Dmitry 30.09.2014 21:12
quelle

Tags und Links