Ja, TList<> verwenden ist sicher richtig, wie Lemmy sagte allerdings nicht davon ableiten sondern sie private Variable intern als Datenspeicher nutzen, und nach aussen nur fachlich notwendige Methoden veröffentlichen (Hinzufügen/Entfernen/Suchen).
Ja dann aber bitte nicht immer wieder für jede Datenklasse, die man in einer Liste braucht sondern eine generische mit nem Constraint auf TESPBase:
Delphi-Quellcode:
type
TESPBase =
class
constructor Create;
destructor Destroy;
function LoadFromXML(
xml: TJclSimpleXMLElem): Boolean;
virtual;
function DumpToJSON:
String;
virtual;
end;
TEmployee =
class(TESPBase)
constructor Create;
destructor Destroy;
function LoadFromXML(
xml: TJclSimpleXMLElem): Boolean;
function DumpToJSON:
String;
property ID:
String;
property FirstName:
String;
property LastName:
String;
end;
TESPBaseList<T: TESPBase> =
class(TESPBase)
constructor Create;
destructor Destroy;
function LoadFromXML(
xml: TJclSimpleXMLElem): Boolean;
function DumpToJSON:
String;
procedure Add(Elem: T);
procedure Clear;
procedure Delete(
Index: Integer);
procedure IndexOfID(SearchID:
String);
property Items[
Index: Integer]: T;
property ItemsByID[
Index:
String]: T;
end;
TEmployeeList = TESPBaseList<TEmployee>;