2010-07-13 94 views
0

好吧,我通過WebOrb將一個複雜的對象從我的.NET庫傳遞到我的Flex應用程序。 爲了自動翻譯,我使用[RemoteClass]元數據標記,如下所示:使用[RemoteClass]填充ArrayCollection屬性

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

    public var Name:String; 
} 

這工作絕對沒問題,直到我儘量延長計劃類包含的複雜的項目的數組:

.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計劃類的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; 
} 

而是集功能不會被調用。

我能做些什麼來讓孩子們以這種方式進入我的Flex應用程序?

謝謝!

回答

0

對我來說,設置的方法永遠不會被調用,這並不奇怪。理論上,該對象應該從服務器返回已設置的項目。

這就是說,我不認爲ArrayCollection會匹配服務器端對象。嘗試在Flex中使用數組。在.NEt中,您應該使用其中一種「支持」類型。如果List是IList的實現,那麼你可能沒問題。

這裏是.NET to Flash Player WebORB Conversion Chart

+0

一個數組!當然! DUUUUUH! 非常感謝,只需將其從ArrayCollection更改爲完美! – user176504 2010-07-13 16:35:10

+0

很高興幫助!如果你需要一個ArrayCollection,你總是可以添加一個像getChildrenAsArrayCollection這樣的方法來爲你做轉換。不過,要注意向Flex類添加新屬性,因爲它可能會干擾自動AMF轉換。 – JeffryHouser 2010-07-13 16:43:07