Ich glaube du vermischst hier Daten und die Listen-Items. Falls ich dich richtig verstehe würde es meiner Meinung nach so aussehen:
Delphi-Quellcode:
type
TChainList<T> = class(TPersistent)
private
FData:T;
FDeleting: Boolean;
FEol: Boolean;
FPredecessor: TChainList;
FSuccessor: TChainList;
function GetEol: Boolean;
procedure SetDeleting(const Value: Boolean);
property Deleting: Boolean read FDeleting write SetDeleting;
public
destructor Destroy; override;
procedure Add(Item: T);
function Delete: TChainList;
function Last: TChainList;
function First: TChainList;
function Next: TChainList;
function Previous: TChainList;
property Eol: Boolean read GetEol;
property Data: T read FData write FData;
end;
TTestClass = class(TChainList<string>)
end;