如何将“接口实现”注入脚本?假设我在TdwsUnit中定义了一个接口类型,比如
IFoo = interface
procedure Bar;
end;
现在如何在脚本中实现一个返回array of IFoo
(或者IFoo列表甚至单个IFoo)的函数?
我尝试将IFoo项添加到单元的Instances
集合中但导致错误:
语法错误:TdwsUnit:“uTest” - TdwsInstance:“tmp” - AutoInstantiate为true但DataType“IFoo”不是类
创建一个IFoo类型的变量编译,它的OnReadVar
事件触发,但是我应该以{{1}}的形式返回那里?
我想我可以为每个接口定义一个类,然后创建这些类的实例,但它似乎有点迂回,因为我本身不需要这些类,我只想通过接口类型向脚本公开信息。 ..那么有没有办法将一个“接口实例”数组返回给脚本?
更新
所以,我已经想出如何将数组从Delphi端返回到脚本端,现在我需要找到一种方法来创建“接口实例”以放入结果数组......到目前为止我所拥有的:
在value
的后代中,我创建了一个函数(实际上是一种方法,但我猜这不相关)
TdwsUnit
然后在meth := typClass.Methods.Add;
meth.Name := 'GetData';
meth.ResultType := 'array of String';
meth.OnEval := H_EvalFnc_GetData;
OnEval
现在我需要将结果类型更改为procedure TMyUnit.H_EvalFnc_GetData(Info: TProgramInfo; ExtObject: TObject);
begin
Info.ResultVars.Member['Length'].Value := 2;
Info.ResultVars.Element([0]).Value := 'Hello';
Info.ResultVars.Element([1]).Value := 'Word';
end;
,并弄清楚如何在array of IFoo
hadler中创建数组元素...任何有关如何欢迎的提示。