سؤال

عندما يقوم معالج مستورد WSDL بإنشاء الواجهات، تحتوي جميع الخصائص على خيار الفهرس، ولكن عند قراءة الكود ووحدة InvocRegistry، لا يمكنني العثور على سبب ذلك، هل يعرف أحد ما إذا كان ذلك ضروريًا حقًا؟

مثله

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

أنا أسأل لأنني أريد تغيير هذه الوحدة، وإضافة بعض الواجهات إلى هذه الفئات، للتكامل مع إطار عمل MVP.

هل كانت مفيدة؟

المحلول 2

لقد وجدت شرحًا أكثر تفصيلاً لهذا السؤال ،عند استخدام الفهارس، يمكن أن تشترك العديد من الخصائص في نفس طرق الوصول.

مثال جيد، من تعليمات دلفي 2009:

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;

لاحظ أن جميع الخصائص تشترك في نفس طريقة الوصول.

نصائح أخرى

ويتم تمرير IS_OPTN إلى GetUser وSetUser عبر المعلمة "مؤشر" عند الوصول إلى خاصية مستخدم.

ووحاصل / اضعي ربما تبدو هذه:

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

وهكذا، والتفكير في الأمر على النحو التالي:

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

و

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

نعم، كان ذلك ضروريا. مع هذه المعلومات، على سبيل IS_OPTN exemple، الفئة من TRemotable يعرف أنه عندما خاصية اختيارية لبناء XML، حتى إذا هو اختياري، يتم إضافة العقدة فقط إذا تم تخزين القيمة. على قضيتك:

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

ستضاف المستخدم في XML إذا <م> User_Specified صحيح العنصر. و<م> User_Specified يتحول صحيح تلقائيا عند تعيين القيمة إلى المستخدم، لأن SetUser اضع تفعل ذلك.

وهكذا، عندما مكون سبيل المثال SOAP بور، وبناء على XML، ستضاف عنصر فقط إذا تم تخزين لأنها الاختياري (IS_OPTN).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top