Autor Beitrag
Oliver M.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109
Erhaltene Danke: 1

Win 8 CP
VS 11 Beta
BeitragVerfasst: Fr 08.07.11 20:40 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109
Erhaltene Danke: 1

Win 8 CP
VS 11 Beta
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: Oliver M.
Oliver M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109
Erhaltene Danke: 1

Win 8 CP
VS 11 Beta
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 09.07.11 11:19 
Hallo Oliver,

klar kann man von List<T> ableiten:
ausblenden 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);
  }
}

Für diesen Beitrag haben gedankt: Oliver M.
Oliver M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109
Erhaltene Danke: 1

Win 8 CP
VS 11 Beta
BeitragVerfasst: 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