2012-09-26 33 views
1

我創建一個Windows 8應用程序,需要包含兩個主要類型的數據 - List<Project>List<User>,其中ProjectUser是包含不同類型的數據的數據模型(包括List S以外的物體等)。使用自定義類堅持應用程序數據

我以前一直在製作Windows Phone應用程序,在那裏我只是使用應用程序設置將數據存儲在類似的場景中。所以我希望這也能在Windows 8中工作。

我已選擇使用ApplicationData.Current.LocalSettings結構來保存我的應用程序數據。但是,每當我試圖挽救我的數據,我得到這種類型的錯誤:

WinRT information: Error trying to serialize the value to be written to the application data store Additional information: Data of this type is not supported.

的車型都標有[DataContract]屬性,如果有什麼差別。

據我所知understood Microsoft,只有標準的數據類型(如布爾值,字符串等)可以用這種方式保存。它是否正確?

如果是這樣,我該如何保存這種結構的數據?

幫助將不勝感激!

回答

3

複雜的類型會導致一點悲傷,我不能確認這是不可能的,但還有其他選擇。

在我想要存儲應用程序數據而沒有數據庫引擎開銷的情況下,我使用序列化。根據您的類型的組成(歸結爲簡單的數據類型並具有公共的getter/setter),您可以使用XML序列化和/或二進制序列化。

XML序列化在可以方便地查看(編輯)應用程序範圍之外的數據的情況下可能更好。 (調試等)然而,它會對數據施加更多限制,除非您選擇手動編碼自定義序列化器。二進制序列化更加靈活,並與壓縮和加密相結合,爲您提供更多緊湊/僞裝/安全的數據存儲選項。 (如果使用壓縮/解壓縮和加密,則需要額外的一些額外成本)。

不幸的是,二進制不會很適合將某些東西粘貼到本地應用程序數據中,而無需將其轉換爲Base64字符串。 (導致潛在的大量文本)通常,在序列化選項中,我會將文件保存在用戶有足夠權限的指定文件夾中。

+0

感謝您的好回答史蒂夫。但是,您是否說真的沒有簡單的方法來保存像我在應用程序中那樣的數據結構?我會收集很多應用程序來完成像我一樣的數據結構,所以比手動序列化更簡單的方法應該可用,不是嗎? –

+1

不知道數據的結構很難說。 「應用數據」可以表示任何內容。簡單的事情,比如用戶配置設置,可以很容易地通過一個配置類和一個能夠保存其值並從應用設置構建它的存儲庫來管理。如果你想要更復雜的數據結構,這並不容易。爲此,我將序列化或ORM應用於數據源。 (數據庫或XML)IMO,序列化是一個非常簡單的選擇。 :) –

相關問題