Hallo zusammen,
ich habe einen Soap- Service, über welchen Commands abgeholt werden.
Hier der Aufbau des Service- Interfaces:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| type ISoapSvc = interface( IInvokable ) ['{44CCD15C-A354-47F0-B9FD-E2BA41FA6B40}'] function GetCommand : TCommand; stdcall; end;
TCommand = class( TRemotable );
TCmdHostName = class( TCommand );
implementation
uses Soap.InvokeRegistry;
initialization InvRegistry.RegisterInterface( TypeInfo(ISoapSvc) );
RemClassRegistry.RegisterXSClass( TCommand ); RemClassRegistry.RegisterSerializeOptions( TCommand, [xoLiteralParam] );
RemClassRegistry.RegisterXSClass( TCmdHostName ); RemClassRegistry.RegisterSerializeOptions( TCmdHostName, [xoLiteralParam] ); |
Der Service stellt die Funktion "GetCommand" bereit. Zurückgegeben wird eine Instanz vom Typ "TCommand". Nun kommt es bspw. vor, dass der Command "TCmdHostName" (abgeleitet von TCommand) zurückgegeben wird. Auf der Gegenseite (Client) wird dann aber keine TCmdHostName- Instanz bereitgestellt, sondern eine Instanz der Basisklasse "TCommand".
Ich bin der Meinung, dass ich das Übergeben von abgeleiteten Instanzen vor Jahren schonmal hinbekommen habe.