Delphi 7 Soap 传递对象数组 TRemotable 的问题

44 views
Skip to first unread message

电脑玩家

unread,
Oct 9, 2009, 3:40:17 AM10/9/09
to 挨踢技术
问题描述:
1. 直接继承自 TRemoteable 的类,从服务器端传递到客户端,读对象pbulished属性没有问题。这是使用 TRemotable
类的目的。传递它的数组,也没有问题。

2. 间接继承的类,比如:TMyField = class(TRemoteable); TMyStringField = class
(TMyField),直接传递这个类的对象给客户端,也没问题。但如果传递这个类的数组给客户端,TMyFieldArray = array
of TMyField; 把一个有多个元素的 TMyFieldArray 传递给客户端,里面的元素是子类 TMyStringField,客户端
可以读到传递过来的对象,但读取对象的属性值时,只能读到父类的属性值,子类实现的属性值读不到。观察由服务器端传递过来的 XML 内容,可以看到
XML 里有子类实现的属性的值。

解决此问题:向系统注册子类。注册语句:

initialization
RemClassRegistry.RegisterXSClass(TRmStringField, 'http://
www.code6421.com/XMLSchema', 'TRmStringField',''); //间接继承 TRemotable 的子
类。
RemTypeRegistry.RegisterXSInfo(TypeInfo(TRmFields),'http://
www.code6421.com/XMLSchema','TRmFields'); //数组类

finalization
RemClassRegistry.UnRegisterXSClass(TRmStringField);
RemTypeRegistry.UnRegisterXSInfo(TypeInfo(TRmFields));

Reply all
Reply to author
Forward
0 new messages