Warum nicht so
myObj := TMyObject<IMySubInterface>.Create(TMySubInterfaceImpl.Create);
?
TClass braucht man nur, wenn man "verschiedene" Klassentypen in einer Variable speichern und dann Diese später zum Erstellen/Vergleichen verwenden will.
Ich hab sowas bisher verschachtelt, also
TMyObject<IIrgendwas>.TMyClass
statt
TMyObjectClass<IIrgendwas>
, denn so gibt es die wenigsten Inkompatibilitäten und alles was zusammen gehört ist auch zusammen.
Delphi-Quellcode:
TMyObject<I: IMyInterface> = class(TBaseClass)
public type
TMyClass = class of TMyObject<I: IMyInterface>;
public
constructor Create(const Intf: I); reintroduce;
end;
Auch andere Typen, welche z.B.
nur in dieser Klasse existieren und wo es in der Regel extern keine Variablen mit gibt, kommen auch mit da rein.
(private oder public dann halt je nach dem ob diese Typen nur in Private/Interface oder auch in Public-Deklarationen verwendet werden)