Autor Beitrag
Master_BB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Do 18.05.06 23:51 
Hallo,
wenn ich eine Klasse habe die ich von arraylist
abgeleitet habe und generisch ist, wie greife ich auf ein
einzelnes element zu?

sieht roh so aus

ausblenden C#-Quelltext
1:
2:
3:
4:
pulic class EventList<T> : Arraylist
{
  public EventList(){}
}


nun sollen da EventItems per Add hinzugefügt werden
und ich möchte irgentwie über
EventList myEL = new EventList<EventItem>();
myEL[2]
darauf zugreifen udn halt ein EventItem rauskriegen

wenn mir da mal jemand das kurz verraten kann
ich finds irgentwie so expliziet nicht so schnell

Moderiert von user profile iconChristian S.: Quote- durch C#-Tags ersetzt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 19.05.06 00:05 
ArrayList ist doch gar nicht generisch? :gruebel: Willst Du nicht lieber von List<T> ableiten?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Master_BB Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Fr 19.05.06 01:00 
hm compiler meckert so aber nicht.

ok wenn ich also von der list ableite
hab ich da dann wenigstens gleich item als member zur verfügung?
ich hab mich nämlich gewundert warum ich auf
item von arraylist nicht zugreifen konnte durch das generische
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 19.05.06 12:38 
Die indexed Property verschwindet doch nicht beim Ableiten, du kannst weiterhin wie bei einer List/ArrayList darauf zugreifen :gruebel: .

Btw: Meist macht ein Wrapper um List<> mehr Sinn als eine Ableitung.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
class FooList<T> : IList<T> 
{
  List<T> innerList;

  T this[int index] {
    get {
      return innerList[index];
    }
    set {
      if (bar)
        DoSomethingSpecial(value);
      innerList[index] =  value;
    }
  }

  // uswusf
}
Master_BB Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Sa 20.05.06 10:50 
hm also ein interface zu implementieren ist mir zuviel aufwand,
da ich auch nur die List<T> mit ein paar erweiterten Funktionen benötige.
Mein konzept sieht also so aus

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
public class EventList<T> : List<T>
{
  //Problem hab ich jetzt hier
  public void AddNewEvent(......)
  {
    EventItem ANew = new EventItem();
    Add(ANew);
  }
}


bei der Add stelle meint er doch tatsächlich
"Die beste Übereinstimmung für die überladene System.Collections.Genereic.List<T>.Add(T)-Methode hat einige ungültige Argumente".
Eigentlich müßte die Liste doch jetzt schucken was ich will.
Wenn ihr mir dabei nocheinmal helfen könntet.

Gruß


Moderiert von user profile iconChristian S.: Quote- durch C#-Tags ersetzt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 20.05.06 15:20 
Du musst dich schon entscheiden, ob du nun eine generische Liste oder eine für EventItems haben willst. Beides zusammen macht keinen Sinn ;) .
Master_BB Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: So 21.05.06 19:28 
ich will eine generische für eventitems
aus einem grund, wenn ich mir eine eventlist von arraylist
ableite und dann all meine schönen sachen mache die für eventitems in der
liste sind, hab ihc immernoch das "problem" das ich wenn ich auf
ein bestimmtes item zugreife typecasten muss.
und ich will die generische dazu verwenden das wenn ich die
property Items von der liste benutze ich gleich mein eventitem bekomme
und nicht typecasten muss.
das ist an sich der einzigste punkt warum ich hier eine
generische liste möchte, ich will nicht typecasten,
und warum sollte ich das auch nicht tun?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 22.05.06 18:12 
user profile iconMaster_BB hat folgendes geschrieben:
ich will eine generische für eventitems

Das willst du nicht.
;)
Was du willst, ist das:
ausblenden C#-Quelltext
1:
2:
3:
4:
public class EventList : List<EventItem>
{
  ...
}

Was du meinst, wäre das:
ausblenden C#-Quelltext
1:
2:
3:
public class EventList<T> : List<T>
  where T : EventItem;
...

Diesen Klassentyp könntest du dann auf jeden Nachfahren von EventItem spezialisieren, aber so wie ich das sehe, hast du gar keine solchen.