在Flex 3.2中,在模块中将远程对象结果转换为客户端的特定对象时遇到问题.Flex 3.2中的



在模块中将远程对象结果转换为客户端的特定对象时遇到问题。

例如,我有VIPSAdmin模块。

它具有功能

private function doResult(event:ResultEvent):void {
var data_:Array = ArrayUtil.toArray(event.result); 
var result:ResultDTO = data_[0] as ResultDTO;
if(!result.isError()) {
    trace(result.result);
    vipsAdminDTO = result.result as VIPSAdmin;
    compId= vipsAdminDTO.compId; // second time dying here
}

}

从远程对象获取数据时调用的函数。

第一次一切都很好,当我卸载这个模式并再次加载时:

data_[0]作为ResultDTO;

性能良好,但

vipsAdminDTO=结果.result为VIPSAdmin;

vipsAdminDTO始终为空!

即使

trace(result.result);

生成[对象VIPSAdmin]

我在这里错过了什么!?看起来它就是做不到

result.result为VIPSAdmin;

即使跟踪和调试说它是VIPSAdmin 的实例

我已经弄清楚了问题所在,问题是当我第一次在模块中实例化某个东西,然后在主应用程序中实例化时,不知何故,即使类是相同的,它们也不相等!

所以解决方案是先在应用程序类中创建一个假实例,然后如果您在模块中使用同一个类来创建实例,它就会工作!

我在我刚刚添加的主要应用程序类中做得很简单:

VIPSAdmin;

这似乎创建了某种ghost实例,我相信GC稍后会拾取它,但会正确地构建实例表!这解决了我的问题。

不确定这是否是合适的解决方案!但它确实有效。

最新更新