Ist eine Eigenschaft IEnumerableT möglich?

8

Ich habe eine Klasse, die IEnumerable<T> hat, wo ich verschiedene Eigenschaften haben möchte, die einen gefilterten IEnumerable<T> -Zugang bereitstellen.

Also zum Beispiel:

%Vor%

Soll das so sein? Nur nicht sicher, darüber komplett.

Danke.

    
Joan Venge 02.09.2010, 18:54
quelle

7 Antworten

11

Sicher, aber vielleicht möchten Sie es als

umschreiben %Vor%

was genau dasselbe tut.

    
mquander 02.09.2010, 18:56
quelle
4
%Vor%

Sie haben die get / Klammer vermisst, um daraus eine Methode zu machen. Was ist Box , meinst du ShapeType.Box ? Vielleicht auch in OnlyBoxes umbenennen, scheint mehr beschreibend.

    
Yuriy Faktorovich 02.09.2010 18:57
quelle
2

Sicher, das sollte funktionieren (soweit ich das beurteilen kann), obwohl @ Mquanders Lösung vielleicht etwas eleganter ist.

    
Fredrik Mörk 02.09.2010 18:56
quelle
1

Das ist gültig, aber redundant, denke ich. Wenn Sie eine stark typisierte Liste von Formen anzeigen möchten:

%Vor%

Die Klasse List<T> implementiert IEnumerable.

    
Dave Swersky 02.09.2010 18:57
quelle
1

Ich persönlich glaube, dass Ihre Eigenschaft OnlyBox redundant ist. Da die Benutzer Ihrer Klasse immer die Option haben, Linq wie die folgenden mit der gleichen Leistung zu verwenden. Also, es sei denn, Sie können es besser als die Linq-Methoden, ich denke, es ist in Ordnung, es dem Benutzer der Klasse wie folgt zu lassen:

%Vor%

Aber wenn Sie eine Eigenschaft möchten, anstatt:

%Vor%

Sie könnten schreiben:

%Vor%     
Lasse Espeholt 02.09.2010 18:58
quelle
1

Eine LINQ-ähnliche Mode würde eine Methode für Ihre Sammlung bereitstellen:

%Vor%

Oder lassen Sie Benutzer einfach eine Where-Klausel:

%Vor%

Ansonsten ist nichts mit IEnumerable als Eigenschaft falsch (Bedenken Sie, dass Eigenschaften so einfach sein sollten, dass sie selten Ausnahmen auslösen).

    
user7116 02.09.2010 18:59
quelle
0

Ja. Was du hast, ist gut. Sie können auf lambda-basiert konvertieren, wenn Sie ihre Ausdruckskraft bevorzugen, obwohl die Lambda-Version manchmal weniger performant sein kann (nicht so sehr, dass ich eine Lambda-Version auf 2.0 ändern würde, es sei denn, es würde sich als problematisch erweisen. aber genug, dass ich einen perfekt guten 2.0-Style nicht auf Lambda-Basis umstellen würde, es sei denn, es macht ein viel aussagekräftiger.

    
Jon Hanna 02.09.2010 21:17
quelle

Tags und Links