[C#]Container, Liste und ein Feld - wie lese ich es aus

itseit

Erfahrenes Mitglied
Hi,

ich habe folgende Daten:
ContainerKlasse015 o2 = new ContainerKlasse015(new List<AKlasse015>( new AKlasse015[]{
new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM"),new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM"),new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM")
,new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM"),new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM"),new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM")
,new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM"),new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM"),new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM")
,new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM"),new BKlasse015("znzzzzzzzzzzzzzzzzzzzzz", 'M',
10, 'M', "ZM",
"ZM")})

Nun habe ich keine Ahnung wie ich das auslesen kann.

ContainerKlasse015 ist eine Container der auch einem Indexer und GetEnumerator besitzen soll, nur habe ich keine Ahnung wie ich das machen soll.
 

Norbert Eder

Erfahrenes Mitglied
Da muss dein Container IEnumerator implementieren. Oder du machst aus deinem Container selbst eine generische Liste :)

Gehen wir davon aus, dass AKlasse015 und BKlasse015 vom gleichen Basisobjekt Klasse015 ableiten:
C#:
public class ContainerKlasse015 : List<Klasse015>
{
  // implementation goes here
}
Und schon ist deine Klasse eine Liste. Du kannst natürlich auch noch anders einschränken:
C#:
public class ContainerKlasse015 : List<T>
   where T : AKlasse015, BKlasse015
{
   // implementation goes here
}
Alles klar?
 

itseit

Erfahrenes Mitglied
Hi,
die AKlasse ist die Basisklasse, BKlasse und CKlasse sind Vererbungen davon.

Ich habe nun keine Ahnung wie ich auf den Inhalt dieser Liste komme und wie ich den Container dazu schreibe, dein Beispiel hat den Fehler "CS0080" ausgelöst.

"Einschränkungen für nicht generische Deklarationen sind unzulässig"

Ich hab die drei Klassen als Anhang, ich habe auch schon die MSDN Libary durchsucht. Aber es gibt dort eine Reihe von Möglichkeiten und daher finde ich mich einfach nicht zurecht, sogar 2 Bücher haben nicht weitergeholfen. Den nirgends ist so ein Fall beschrieben.
 

Anhänge

  • 27821attachment.zip
    3 KB · Aufrufe: 41

Norbert Eder

Erfahrenes Mitglied
Abgesehen dass der Programmierstil sehr übel ist:
C#:
public class MyContainer : List<AKlasse015>
{
}
Und dann kannst du so damit arbeiten:
C#:
MyContainer container = new MyContainer();
container.Add(new BKlasse015("test", 'a', 1, 'b', "para5", "para6"));
container.Add(new CKlasse015(true, 3.14d, 'a', "para1", "para5"));
Und schon hast du GetEnumerator etc. implementiert.