Autor Beitrag
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20395
Erhaltene Danke: 2212

Win 10
C# (VS 2017)
BeitragVerfasst: Fr 30.05.08 20:35 
Hi!

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

ausblenden Delphi-Prism-Quelltext
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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".


Zuletzt bearbeitet von Christian S. am Mo 08.12.08 21:04, insgesamt 1-mal bearbeitet
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Sa 31.05.08 08:56 
user profile iconChristian 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 Delphi-Prism-Quelltext
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 Delphi-Prism-Quelltext
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));