Kennt jemand inzwischen vielleicht doch eine Lösung?
Mein Problem:
Ich habe einen Container mit einer generischen Liste
Delphi-Quellcode:
unit od;
interface
uses
Classes, Contnrs, Generics.Collections;
type
AttrOd =
class(TCustomAttribute);
Tod =
class(TComponent)
private
...
protected
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
...
published
...
end;
Todl<T: Tod> =
class(Tod)
private
FItems: TObjectList<T>;
protected
...
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
property Items: TObjectList<T>
read FItems;
published
end;
...
constructor TodSport.Create(AOwner: TComponent);
begin
inherited;
FNumeratorList := Todl<TodNumerator>.Create(Self);
FDisciplineGroupList := Todl<TodDisciplineGroup>.Create(Self);
end;
...
Über
RTTI ermittle ich verschiedene Eigenschaften und erhalte ein TObject "O", das auf die Property NumeratorList von Sport zeigt.
Nun würde ich gern auf die einzelnen Items zugreifen (z.B. über
(O as Todl<Tod>).Items[0]
).
An den ClassName 'TObjectList<odNumerator.TodNumerator>' komme ich heran, aber ein Cast ist wohl nicht möglich, oder?
Ich will mit allen Items (die vom Typ "Tod" sein müssen) eine Aktion durchführen.
Muss ich in diesem Fall auf Generics verzichten?