Apache flex 使用[RemoteClass]填充ArrayCollection属性

Apache flex 使用[RemoteClass]填充ArrayCollection属性,apache-flex,actionscript,remoting,arraycollection,remoteobject,Apache Flex,Actionscript,Remoting,Arraycollection,Remoteobject,好的,我正在通过WebOrb将一个复杂对象从.NET库传递到Flex应用程序。 为了自动翻译,我使用[RemoteClass]元数据标记,如下所示: [RemoteClass(alias="test.PlanVO")] public class Plan { [SyncId] public var id:int; public var Name:String; } 在我尝试扩展Plan类以包含一个复杂项数组之前,这是非常好的: .NET: 在这种情况下,即使.NET库

好的,我正在通过WebOrb将一个复杂对象从.NET库传递到Flex应用程序。 为了自动翻译,我使用[RemoteClass]元数据标记,如下所示:

[RemoteClass(alias="test.PlanVO")]
public class Plan
{
    [SyncId]
    public var id:int;

    public var Name:String;
}
在我尝试扩展Plan类以包含一个复杂项数组之前,这是非常好的:

.NET:

在这种情况下,即使.NET库返回子级,ActionScript计划类的children属性也为null

我已尝试将“子对象”字段更改为如下属性:

private var _children:ArrayCollection;
public function get children():ArrayCollection 
{
    return _children;
}
public function set children(o:*):void
{
    if(o is ArrayCollection)
        _children = o;
    else if(o is Array)
        _children = new ArrayCollection(o);
    else
        _children = null;
}
但是set函数从未被调用

我该怎么做才能让孩子们以这种方式进入我的Flex应用程序


谢谢

set方法从未调用,这对我来说并不奇怪。从理论上讲,对象应该从服务器返回,并且已经设置了项

也就是说,我不认为ArrayCollection会与服务器端对象匹配。尝试在Flex中使用数组。在.NEt中,您应该使用受支持的类型之一。若列表是IList的一个实现,那个么您可能就没事了


这是

一个数组!当然多啊!!!非常感谢,只需从ArrayCollection中更改它就可以了!很乐意帮忙!如果需要ArrayCollection,则始终可以添加一个方法(如getChildrenAsArrayCollection)来为您进行转换。但是,在向Flex类添加新属性时要小心,因为它可能会干扰自动AMF转换。
[RemoteClass(alias="test.PlanVO")]
public class Plan
{
    [SyncId]
    public var id:int;

    public var Name:String;

    public var children:ArrayCollection;
}

[RemoteClass(alias="test.PlanElementVO")]
public class PlanElement
{
    public var elementName:String;
}
private var _children:ArrayCollection;
public function get children():ArrayCollection 
{
    return _children;
}
public function set children(o:*):void
{
    if(o is ArrayCollection)
        _children = o;
    else if(o is Array)
        _children = new ArrayCollection(o);
    else
        _children = null;
}