Entwickler-Ecke

Basistechnologien - Liste selbst bauen


Oliver M. - Fr 08.07.11 20:40
Titel: Liste selbst bauen
Hallo,
ich möchte eine besondere Liste haben, die eigentlich so funktioniert wie die List<T>-Klasse, aber brächte ich eine kleine Änderung in der Add-Methode. Kein Problem: Ich vererbe die List<T>-Klasse! Kleiner Hacken: Die List<T>-Klasse kann man nicht vererben. Also, habt ihr eine Idee zur Lösung des Problems?
MfG Oliver


Ralf Jansen - Fr 08.07.11 20:50

Wenn du eine Liste mit einen speziellen Verhalten brauchst leitet man üblicherweise von Collection<T> oder einem seiner Nachfahren (wie z.B. ObservableCollection<T>) ab. Um das Einfügeverhalten zuändern würde man dann aber InsertItem überschreiben das von Allen Einfügeoperation benutzt wird und nicht nur von Add.

Was soll diese Liste den in Add machen? Wenn du uns das verrätst können wir dir vermutlich die passende Basiscollection nennen oder eine Listen Klasse die genau das was du brauchst bereitst tut.


Oliver M. - Fr 08.07.11 21:58

Hallo,
danke für den Tip mit Collection<T> (ObservableCollection<T> habe ich nicht gefunden) aber das ist nicht gans was ich brauche, ich brauche nämlich eine Überschreibung der Add-Methode.
Warum? Das ist gans einfach oder auch nicht: ich habe eine öffentliche Klasse (public class RegKey), von der allerdings nur intern eine neue Instans erstellt werden kann ((internal) RegKey(parameter, parameter);). Wenn ich meiner Listen-Klasse (KeyList soll sie heißen) allerdings von außen ein neues RegKey-Element hinzufügen möchte, kann ich ja keine neue Instans dieser RegKey Klasse machen, weil das ja nur intern geht, alse muss ich folgendes machen: Add(parameter, parameter), die neue Instans wird also intern erstellt. Aber das ist irgendwie nicht so einfach...
Ich hoffe mir ist noch zu helfen,
Oliver


Ralf Jansen - Fr 08.07.11 22:35

Wenn ich doch verstehe brauchst du einfach eine andere Methode die zufällig auch Add heißt? Überschreiben ist was anderes.

In dem Fall sehe ich nicht dein Problem. Einfach von List<RegKey> ableiten eine neue Add Methode mit den von dir gewünschten Parametern implementieren in dieser Methode eine RegKey Instanz erzeugen und die eigentlich geerbte Add Methode aufrufen.


Oliver M. - Sa 09.07.11 09:26

Danke für die Antwort, aber das habe ich selber schon versucht, doch die List<T>-Klasse kann man leider nicht ableiten :cry:.
Ich hoffe wir kriegen das hin,
Oliver


Th69 - Sa 09.07.11 11:19

Hallo Oliver,

klar kann man von List<T> ableiten:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
class KeyList : List<RegKey>
{
  public void Add(string par1, string par2)
  {
     RegKey regkey = new RegKey(par1, par2);

     Add(regkey);
  }
}


Oliver M. - Sa 09.07.11 13:37

Hey, Danke! Ich war mir sicher ich hätte das mit der Vererbung schon ausprobiert und es hätte nicht geklapt, aber es klappt! :beer:
Danke,
Oliver