Ich habe eine generische Sammlung wie folgt aus:Wie erweitere ich eine generische Sammlung in Delphi?
TFoo = class;
TFooCollection<T: TFoo> = class(TObjectDictionary<string, T>)
procedure DoSomething;
end;
Es funktioniert gut.
Jetzt brauche ich TFooCollection wie folgt zu erweitern:
TBar = class(TFoo);
TBarCollection<T: TBar> = class(TFooCollection)
procedure DoSomethingElse;
end;
Und der Compiler beschwert sich, dass TFooCollection nicht definiert ist. Da TBar von TFoo erbt, möchte ich die TFooCollection-Methoden (die mit TFoo und TBar-Elementen funktionieren würden) nutzen und etwas anderes nur mit TBar Collections tun.
Ist es in Delphi möglich?
Als eine breite Regel bevorzugen Verkapselung zu Vererbung. Möchtest du wirklich, dass jede Methode der Sammelklasse von deiner Klasse offengelegt wird? –
@david Es ist nur so, dass ich in der Basisklassen-Sammlung eine Logik bezüglich Speichern/Laden habe. Der Vererbungsbaum ist nicht tief (nur eine Ebene), aber er ist sehr breit, da wir viele Sammlungen mit verschiedenen Objektklassen haben. – MarcosCunhaLima