如何在DWScript中访问类中另一个类对象的属性或方法?

时间:2018-12-20 13:40:11

标签: delphi dwscript

我实际上将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;

我正在通过ExposeRTTI将这两个类公开给DWScript:

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行已正确编译,但是当我尝试访问ClassTwo(第6行)中ClassOne的属性时,编译器将抛出“预期没有成员”。我了解这是由于RTTI功能受限所致,但是我不知道如何解决此问题。

有人知道如何在脚本中访问myClassTwo.ClassOne.Name吗?顺便说一句,方法。

谢谢!

PS:增加了3行以显示更多尝试-没有成功...

0 个答案:

没有答案