FluorineFx使用自定义VO(实现IExternalizable接口)

网上有文章“Flex与.NET互操作(十四)”描述了如何用AMF格式来传输数据。但是如下图

Flex与.NET互操作(十四):FluorineFx的AMF(Action Message Format)协议通信

客户端接收到的数据,其类型仅仅是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;
...
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;

注意如果是as项目,必须首先执行

registerClassAlias("FxDotNet.Services.DTO.Book", BookVo);

这样就可以了。

原文地址:https://www.cnblogs.com/sagacite/p/1783047.html