FluorineFx使用自定义VO(实现IExternalizable接口)
网上有文章“Flex与.NET互操作(十四)”描述了如何用AMF格式来传输数据。但是如下图
客户端接收到的数据,其类型仅仅是Object,而不是原来自定义的Book类。
在客户端里我们一旦使用as操作符,希望转换成Book类,就会返回null
如何使得as操作符可用?
安装FluorineFX后在FluorineFx\Samples\Flex\Remoting\Externalizable文件夹下面可以看到这样的示例。
这个示例让server端的自定义类实现FluorineFx.AMF3.IExternalizable接口,client端的VO实现flash.utils.IExternalizable接口。
[FluorineFx.TransferObject]
public class AgreementVO : IExternalizable
{
private int _id;
...
public class AgreementVO : IExternalizable
{
private int _id;
...
package example.externalizable
{
import flash.utils.IDataOutput;
import flash.utils.IDataInput;
import flash.utils.IExternalizable;
import mx.collections.ArrayCollection;
[RemoteClass(alias="ServiceLibrary.AgreementVO")]
public class AgreementVO implements IExternalizable
{
private var _id:int;
{
import flash.utils.IDataOutput;
import flash.utils.IDataInput;
import flash.utils.IExternalizable;
import mx.collections.ArrayCollection;
[RemoteClass(alias="ServiceLibrary.AgreementVO")]
public class AgreementVO implements IExternalizable
{
private var _id:int;
注意如果是as项目,必须首先执行
registerClassAlias("FxDotNet.Services.DTO.Book", BookVo);
这样就可以了。