Hi,
habe folgenden Ausdruck, den ich von C# in Delphi umsetzen möchte:
Code:
public ServiceType ResolveService<ServiceType>(string id) where ServiceType : IService
{
...
IService resolvedService = dict[id];
if (!(resolvedService is ServiceType))
{
throw new InvalidCastException();
}
...
}
Das sieht bisher wie folgt aus:
Delphi-Quellcode:
function TServiceLocator.ResolveService<ServiceType>(id:
string): ServiceType;
var
resolvedService: IService;
begin
...
resolvedService := dict[id];
if not (resolvedService
is ServiceType)
then
begin
raise Exception.Create('
Invalid Cast');
end;
...
end;
Das Problem ist, dass der is Operator nicht bei Interfaces funktioniert. Ok, also Supports benutzt:
if not Supports(resolvedService, ServiceType) then
Geht auch nicht:
Code:
[DCC Fehler] E2250 Es gibt keine überladene Version von 'Supports', die man mit diesen Argumenten aufrufen kann
Hat jemand eine Idee, wie ich die Überprüfung übersetzt bekomme?