2009-09-30 41 views
1

我想序列化擴展的UIComponent(com.esri.ags.layers.GraphicsLayer)發送和存儲在MSSQL服務器數據庫使用WebOrb。序列化UIComponent的任何提示

顯然,這些類型的對象並不意味着被序列化,而且我還沒有使用flash byteArray進行很多序列化/反序列化。我也試過其他幾種庫(FlexXB,asx3m,JSONLite,as3corelib)以及其他格式(xml,json),但沒有運氣。

在我寫一些醜陋的屁股功能之前,我希望有人可能知道如何做到這一點。任何想法/建議將不勝感激。

回答

0

一個簡單的方法來獲得你要找的東西就是覆蓋你的組件類的toString()方法並讓它返回JSON或XML(無論你喜歡什麼)。爲了補充toString()方法,您可能需要組件類中的靜態方法將json/xml表示反序列化爲對象。

顯然,這並不意味着這些類型的對象 的被序列化,和我 沒有太多 串行化/使用閃光燈 反序列化的ByteArray

的ByteArray很可能不在最適合用於UIComponent,除了位圖,加載的SWF文件等(雖然之前我已經看過ByteArrays用於這樣的事情)。

如果您需要可靠地序列化您的組件,那麼您可能最好使用自己的序列化/反序列化方法。做這件事最合適的方法是創建一個基本組件(一個從UIComponent繼承的組件),它提供了這些序列化方法,並讓每個繼承類都用它的附加屬性覆蓋它。最後,每個擴展類都應調用super()方法來獲取基類的序列化屬性。

聽起來很複雜,但這是相當簡單和相當普遍的(例如在Cocoa中)。

0

我會建議一個自定義的序列化技術。它使您可以完全控制正在生成/消耗的xml,尤其是在您想要處理UIComponents(它們不是很適合序列化)的情況下。 FlexXB以需要由目標實現的IXmlSerializable接口的形式爲自定義序列化提供入口點。

另一個我個人比較喜歡的想法是,D將會有一個模型視圖方法。您可以創建代表應用程序模型的對象層次結構。這些視圖將只是顯示層的一部分。每個視圖都會接受一個特定類型的對象作爲數據,並相應地呈現信息。添加/刪除視圖會轉化爲添加/刪除模型對象。因此,您不必關心顯示視圖中的序列化,並且可以在模型對象中實現它,使它們成爲自動序列化的完美候選(可以使它們成爲byteArray或XML或以任何格式存儲它們)。此外,您可以自由更改顯示視圖,但不受限制。這是相當數量的工作,但我相信它會及時付清。

祝你好運,

亞歷

相關問題