Als erstes fällt mir auf:
Du arbeitest mit Generics, benutzt aber die nicht generische Objektliste mit Casts?!?
Ich glaube du meintest es so in etwa wie im Anhang:
Delphi-Quellcode:
TListTypeGeneric<TDataObjectType; TListType: TDataTypeGeneric<TDataObjectType>, IDataIO, constructor> = class(TObjectList<TListType>)
...
Benutzung:
Delphi-Quellcode:
var
Test: TListTypeGeneric<Integer, TIntegerClass>;
begin
Test := TListTypeGeneric<Integer, TIntegerClass>.Create;
try
Test.AddNewElement.Data := 42;
ShowMessage(Test.Element[0].ToString); // Oder: Test.Items[0].Data.ToString
finally
Test.Free;
end;
// EDIT:
Das geht aber noch schöner. Ich habe beruflich ein ähnliches Problem gehabt und habe schlicht ein generisches Dictionary benutzt, in dem man Behandlungsroutinen registrieren kann. Auf diese Weise brauchte ich in die konkrete Logik bei der generischen Nutzung keinen weiteren Aufwand mehr hineinstecken solange in dem Dictionary für den jeweiligen Datentyp eine Behandlung hinterlegt war.