Опубликованные свойства не отображаются в веб-сервисе Delphi wsdl - PullRequest
0 голосов
/ 06 декабря 2018

Класс TMyClass из моего файла интерфейса является производным от его родительского класса TMyRemotable, который, в свою очередь, является производным от TRemotable.

Проблема с сгенерированным WSDL заключается в том, что опубликованные свойстваTMyClass не отображаются в типе <complex>.

Рассмотрим следующие фрагменты кода:

Sample.pas

TMyRemotable = class(TRemotable)
public
  class function NewInstance: TObject; override;
  destructor Destroy; override;
end;

UserIntf.pas // Файл интерфейса

TMyClass = class(TMyRemotable)
private
  FUserName: string;
  FpassWord: string;  
published
  property UserName: string read FUserName write FUserName;
  property Password: string read FpassWord write FpassWord;
end;

Мы получаем этот вывод:

<types>
  <xs:schema xmlns="urn:UserIntf" targetNamespace="urn:UserIntf">
    <xs:complexType name="TMyClass">
      <xs:sequence/>
    </xs:complexType>

Ожидаемый вывод:

<types>
  <xs:schema xmlns="urn:UserIntf" targetNamespace="urn:UserIntf">
    <xs:complexType name="TMyClass">
      <xs:sequence>
        <xs:element name="UserName" type="xs:string"/>
        <xs:element name="PassWord" type="xs:string"/>
      </xs:sequence>

Пожалуйста, объясните мне, как включить опубликованные свойства в сгенерированный файл WSDL.

1 Ответ

0 голосов
/ 06 декабря 2018

Если вы хотите, чтобы ваши свойства отображались как узлы элементов или атрибуты в соответствующей кодировке типа SOAP, вам нужно использовать для них немного другое объявление.Они действительно должны быть объявлены как индексированные свойства, например:

published
  property Text: WideString index IS_TEXT read FText write FText;

Подробнее об этом вы можете прочитать в официальной документации Embarcadero:

Использование объектов Remotable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...