好的,我正在通过WebOrb将一个复杂的对象从我的.NET库传递到我的Flex应用程序。 为了自动翻译,我使用[RemoteClass]元数据标签,如下所示:
[RemoteClass(alias="test.PlanVO")]
public class Plan
{
[SyncId]
public var id:int;
public var Name:String;
}
这非常正常,直到我尝试将Plan类扩展为包含一系列复杂项目:
.NET:
public class PlanVO
{
public int id { get; set; }
public string Name { get; set; }
public List<PlanElementVO> children { get; set; }
}
public class PlanElementVO
{
public string elementName { get; set; }
}
的ActionScript:
[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;
}
在这种情况下,即使.NET库返回子项,ActionScript Plan类的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应用程序?
谢谢!
答案 0 :(得分:0)
对我来说,set方法从未调用过,这并不奇怪。理论上,该对象应该从已经设置的项目返回服务器。
那就是说,我认为ArrayCollection不会与服务器端对象匹配。尝试在Flex中使用Array。在.Nt中你应该使用其中一种“支持”类型。如果List是IList的一个实现,那么你可能没问题。