Frage

Wenn WSDL-Importassistent die Schnittstellen erzeugt haben alle Eigenschaften, um die Index-Option, aber den Code und die InvokeRegistry Einheit lesen, kann ich nicht gefunden, was ist das für jedermann wissen, ob es wirklich notwendig ist?

Wie diese

  Login = class(TRemotable)
  private
    [...] 
  published
    property User: string Index (IS_OPTN) read GetUser write SetUser stored User_Specified;
    [...]
  end;

Ich frage, weil ich dieses Gerät ändern mag, das Hinzufügen einiger Schnittstellen zu diesen Klassen, für die mit MVP Rahmen integriert werden.

War es hilfreich?

Lösung 2

fand ich eine ausführlichere Erklärung für diese Frage, Wenn Indizes verwenden, mehrere Eigenschaften können die gleichen Zugriffsmethoden teilen.

Ein gutes Beispiel, von Delphi 2009 Help:

type 
   TRectangle = class 
     private 
       FCoordinates: array[0..3] of Longint; 
       function GetCoordinate(Index: Integer): Longint; 
       procedure SetCoordinate(Index: Integer; Value: Longint); 
     public 
       property Left: Longint index 0 read GetCoordinate write SetCoordinate; 
       property Top: Longint index 1 read GetCoordinate write SetCoordinate; 
       property Right: Longint index 2 read GetCoordinate write SetCoordinate; 
       property Bottom: Longint index 3 read GetCoordinate write SetCoordinate; 
       property Coordinates[Index: Integer]: Longint read GetCoordinate write SetCoordinate; 
       ... 
   end;

Beachten Sie, alle Eigenschaften teilt die gleiche Methode Zugriff.

Andere Tipps

IS_OPTN wird GetUser und setUser über den 'Index' Parameter übergeben, wenn Sie die Benutzereigenschaft zugreifen zu können.

Die Getter / Setter wahrscheinlich so aussehen:

function GetUser(Index:Integer):String;
procedure SetUser(Index:Integer;const value:string);

Also, denken Sie daran, wie folgt aus:

MyString := MyLogin.user;
// is translated to:
MyString := getUser(IS_OPTN);

und

MyLogin.user := 'me'; 
// is translated to:
SetUser(IS_OPTN,'me');

Ja, es ist notwendig. Mit diesen Informationen für exemple IS_OPTN, weiß die Klasse von TRemotable, dass, wenn Eigenschaft ist optional XML zu bauen, so dass, wenn optional ist, wird der Knoten hinzugefügt nur dann, wenn der Wert gespeichert wird. Auf Ihrem Fall:

property User: string Index (IS_OPTN) read GetUser write SetUser stored User_Specified

Das Element Benutzer wird auf XML hinzugefügt werden, wenn User_Specified wahr. Die User_Specified schaltet sich automatisch der Fall, wenn Sie Wert auf User eingestellt, weil die Setter setUser es tun.

Also, wenn die Komponente SOAP por Beispiel wird die XML baut, wird das Element hinzugefügt nur, wenn gespeichert wird, weil es optional ist (IS_OPTN).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top