Registriert seit: 18. Feb 2005
286 Beiträge
Delphi 2010 Enterprise
|
Schnittstelle-als-Schnittstelle-Umwandlung
3. Jan 2011, 12:11
Delphi-Version: 2010
Eine (generische) Schnittstellenreferenz ist gegeben. Nun möchte ich diese in eine andere generische (!) Schnittstelle umwandeln. Gibt es da eine Möglichkeit? (Der Kompiler sagt nein, leider.)
Delphi-Quellcode:
program Project1;
{$AppType Console}
uses
SysUtils,
Classes;
type
ISchnittstelleA<T> = interface
end;
ISchnittstelleB<T> = interface
end;
TKlasse<T> = class(TInterfacedObject, ISchnittstelleA<T>, ISchnittstelleB<T>)
end;
type
T = String;
var
O: TInterfacedObject;
A: ISchnittstelleA<T>;
B: ISchnittstelleB<T>;
I: IInterface;
begin
try
A := TKlasse<T>.Create;
{ Schnittstelle-als-Schnittstelle-Umwandlungen gehen nicht }
// B := A as ISchnittstelleB<T>;
// [DCC Fehler]: E2015 Operator ist auf diesen Operandentyp nicht anwendbar
{ und Schnittstelle-als-Objekt-als-Schnittstelle-Umwandlungen gehen nur mit
"normalen" Schnittstellen, nicht aber mit generischen Schnittstellen. }
O := A as TInterfacedObject;
I := O as IInterface;
{ Wie kann man eine Schnittstellenreferenz vom Typ ISchnittstelleB<T>
erhalten? }
B := O as ISchnittstelleB<T>;
// [DCC Fehler]: E2015 Operator ist auf diesen Operandentyp nicht anwendbar
except
on E: Exception do
Writeln(E.ClassName, ' : ', E. Message);
end;
ReadLn;
end.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
|