![]() |
Mehrere Webservices und Shared-types
Hallo Zusammen,
ich habe ein Problem beim Importieren von mehreren Webservices, die gemeinsam genutzte Typen verwenden. Es sieht wie folgt aus: Webservice1: function GetBla: TBla Webservice2: function GetBlub: TBla TBla ist ein komplexer Datentyp. Natürlich kann man in Delphi für jeden Webservice den Import starten, aber somit wäre die Klasse TBla in zwei Units enthalten. Hier müsste man bei der weiteren Programmierung tierisch auf den Namespace aufpassen. Hat jemand eine Idee, wie man mehrere Webservices mit gemeinsam Typen in Delphi verwendet. Jax-ws sowie C# besitzen die Optionen, shared-types zu verwenden. Delphi wie immer nicht. |
AW: Mehrere Webservices und Shared-types
Du brauchst doch nur den passenden Namespace zu verwenden, oder geht das etwa nicht?
Delphi-Quellcode:
Bei der weiteren Verwendung kann eigentlich nichts schief gehn, da die strenge Typprüfung vom Delphi dir schon sagt, wenn du die Typen durcheinander bringst.
function GetBla: Unit1.TBla;
function GetBlub: Unit2.TBla; (außer man umgeht grob fahrlässig diese Typprüfungen) |
AW: Mehrere Webservices und Shared-types
Aber genau das möchte ich nicht.
Dieses TBla wird generell als DTO (Daten-Transfer-Object) verwendet und in eine andere Klasse konvertiert. Ich müsste dazu Konverterier-Routine duplizieren und wenn ich Webservice-Funktionen befüttern möchte, müssten ich dann ebenfalls zwei (n) Funktionen zum Konvertieren zu einen DTO erstellen, die das identische machen. Es beseht eigentlich das Problem, das WSDLImp.exe die Typen in die selbe Unit generiert und nicht in separate Unit-Files. Java macht dieses natürlich und bei C# tauchen mehrere Services in einem Namespace auf. |
AW: Mehrere Webservices und Shared-types
Dann kannst du die Typen wohl nur noch ableiten.
Delphi-Quellcode:
type
//TBlaBla = Unit1.TBla; -> ohne Type wird nur ein Alias angelegt, aber für den Compiler und die RTTI bleibt es ein TBla aus der Unit Unit1 TBlaBla = type Unit1.TBla; TBlaBlub = type Unit2.TBla; function GetBla: TBlaBla; function GetBlub: TBlaBlub; |
AW: Mehrere Webservices und Shared-types
Zitat:
Delphi-Quellcode:
Ich habe keine Lösung, aber ich bewundere das Problem :)
function Convert(const ABla: Unit1.TBla): TMeineAndereKlasse;
begin Result := TMyAndereKlasse.Create; // ... fülle Result mit Daten aus ABla (Typ aus Unit1) end; function Convert(const ABla: Unit2.TBla): TMeineAndereKlasse; begin Result := TMyAndereKlasse.Create; // ... fülle Result mit Daten aus ABla (Typ aus Unit2) end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz