Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
[2.0, Oxygene, 3.0] Anonyme Klasse außerhalb von LINQ
spacer
Autor Nachricht
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Chefentwickler

Beiträge: 17070
Dabei seit: 07.07.2002
Wohnort: Server-Souterrain

Win 7
Delphi Prism, C# (VS 2010)
BeitragVerfasst am: Fr 30.05.08 19:35 
.NET Version: 2.0
Sprache: Oxygene
Version: 3.0
Antworten mit Zitat Beitrag melden
Hi!

Ich würde gerne eine anonyme Klasse benutzen, aber nicht in einem Linq-Statement. Es soll in etwa so aussehen:

ausblenden Chrome-Quelltext markieren
1:
2:
3:
4:
  var rows := new List<AnonymeKlasse>;
  using reader := MySqlHelper.ExecuteReader(...) do
    while reader.Read do
      rows.Add(new AnonymeKlasse(...));


Nun müsste ich die anonyme Klasse ja schon bei Erstellung der Liste irgendwie definieren. Geht das überhaupt oder muss ich mit einer privaten nested Klasse arbeiten?

Grüße
Christian

_________________
"Physics is a bitch" - William Bell, Fringe


Zuletzt bearbeitet von Christian S. am Mo 08.12.08 20:04, insgesamt 1-mal bearbeitet
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star

Beiträge: 415
Dabei seit: 06.02.2004
Wohnort: München


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst am: Sa 31.05.08 07:56  Antworten mit Zitat Beitrag melden
Christian S. hat folgendes geschrieben:
Nun müsste ich die anonyme Klasse ja schon bei Erstellung der Liste irgendwie definieren. Geht das überhaupt oder muss ich mit einer privaten nested Klasse arbeiten?
Die einzige Möglichkeit das zu lösen ohne selbst die Klasse zu definieren wäre Extensionmethods:
ausblenden Chrome-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
uses 
  System.Runtime.CompilerServices, 
  System.Collections.Generic;

type
  [Extension]
  AnonymousListExtender = public static class
  public
    [Extension]
    method MakeEmptyList<T>(input : T) : List<T>;
  end;
  
implementation

method AnonymousListExtender.MakeEmptyList <T>(input : T) : List<T>;
begin
  exit new List<T>();
end;
Und so würde es benutzt werden:
ausblenden Chrome-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
var list := new class(Abc := 1
                      Def := "2").MakeEmptyList();
list.Add(new class(Abc := 1,
                   Def := "2"));
list.Add(new class(Abc := 3,
                   Def := "4"));

list.ForEach(i -> Console.WriteLine(i.Abc + ", " + i.Def));
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home