Hallo zusammen,
ich probiere mich heute das erste mal an Generics und habe irgendwie ein Verständnisproblem.
Ich habe eine Basisklasse und davon eine Ableitung.
Jetzt möchte ich, dass meine Generic Klasse entweder die Basisklasse nimmt, oder die Ableitung.
Code:
unit MyClass;
interface
type
TMyBase = class
private
FBaseProperty: Integer;
public
property BaseProperty: Integer read FBaseProperty write FBaseProperty;
end;
TMyExtended = class(TMyBase)
private
FExtendedProperty: Integer;
public
property ExtendedProperty: Integer read FExtendedProperty write FExtendedProperty;
end;
TMyGeneric<T: TMyBase>=class
private
FMyItem: T;
public
constructor Create;
property MyItem: T read FMyItem;
end;
TMyBaseClass = TMyGeneric<TMyBase>;
TMyExtendedClass = TMyGeneric<TMyExtended>;
var
vMyBaseItem: TMyBaseClass;
vMyExtendedItem: TMyExtendedClass;
implementation
{ TMyGeneric<T> }
constructor TMyGeneric<T>.Create;
begin
inherited;
FMyItem := TMyBase(T).Create;
end;
end.
Es knallt an der Stelle
Code:
TMyExtendedClass = TMyGeneric<TMyExtended>;
E2010 Inkompatible Typen: 'TMyExtended' und 'TMyBase'
Was mache ich denn falsch?