Как получить доступ к свойствам или методам другого объекта класса внутри класса в DWScript? - PullRequest
0 голосов
/ 20 декабря 2018

Я на самом деле использую dwscript с delphi и застрял в следующей проблеме:

Я определил два класса следующим образом

TClassOne = class
  private
   FName : String;
 public
   property Name: String read FName write FName;
end;

TClassTwo = class
  private
    FName      : String;
    FClassOne  : TClassOne;
  public
    property Name: String read FName write FName;
    property ClassOne: TClassOne read FClassOne write FClassOne;
end;

Я выставляю оба класса в DWScript через ExposeRTTI:

dwsUnitExternal.ExposeRTTI(TypeInfo(TClassOne), [eoExposeVirtual, eoNoFreeOnCleanup, eoExposePublic]);
dwsUnitExternal.ExposeRTTI(TypeInfo(TClassTwo), [eoExposeVirtual, eoNoFreeOnCleanup, eoExposePublic]);

Это в основном работает, потому что, когда я вставляю следующие строки

var myClassTwo : TClassTwo = TClassTwo.Create;
myClassTwo.Name := 'test';

var myClassOne : TClassOne = TClassOne.Create;
myClassOne.Name := 'abc';

myClassTwo.ClassOne := myClassOne;
myClassTwo.ClassOne.Name := 'xyz';  // Comiler error

var myClassOne2 : TClassOne;
myClassOne2 := myClassTwo.ClassOne; // Compiler error
myClassOne2 := (myClassTwo.ClassOne as TClassOne); // Compiler error

в DWScript, первые 5 строк правильно компилируются, но когда я пытаюсь получить доступ к свойствуClassOne в ClassTwo (6-я строка), компилятор выдает «член не ожидается».Я понимаю, что это связано с ограниченными возможностями RTTI, но я не знаю, как решить эту проблему.

Кто-нибудь знает, как получить доступ к myClassTwo.ClassOne.Name в скрипте?То же самое с методами, кстати.

Заранее спасибо!

PS: добавлено еще 3 строки, чтобы показать больше попыток - безуспешно ...

...