Hallo,
ich versuche gerade mein Glück mit
Rtti und habe mir mit Hilfe der Hilfe
diesen Code zusammengestoppelt, der jedoch leider nicht funktioniert:
Delphi-Quellcode:
procedure TProduct.Assign(Product: IProduct);
var
LContext : TRttiContext;
LInstanceType : TRttiInstanceType;
LType : TRttiType;
LInterface : TRttiInterfaceType;
Props : TArray<TRttiProperty>;
Value : TValue;
begin
LContext := TRttiContext.Create;
try
LType := LContext.GetType(TProduct);
LInstanceType := LType.AsInstance;
LInstanceType.GetInterface(TGUID.Create('{108A3B28-575B-423F-AE2E-1D8354E3289C}'),
LInterface);
Props := LInterface.GetProperties;
end;
Was geht nicht?
LInterface ist nil, also scheitert GetInterface.
Das IProduct Interface besitzt jedoch die im Code angegebene GUIID und wenn ich da rein debugge
wird diese GUIID scheinbar auch richtig erzeugt. Nur das Interface wird intern irgendwie nicht
gefunden.
Nein,
RTTI Hab' ich in der betreffenden
Unit nicht ausgemacht. IProduct erbt von einem anderen
selbst definierten Interface, das hat aber seine eigene
GUID und erbt nicht weiter (bzw. IInterface).
Woran liegt das, dass das nicht gefunden wird?
Das Programm benutzt zur Laufzeit schließlich erfolgreich jede Menge IProducts...