2011-03-21 78 views
4

那麼我們還是沒有Silverlight 4中的Serializable屬性?我在網上有一些令人困惑的迴應。當我嘗試在我的代碼中使用它時,出現名稱空間錯誤。這些都是我包括Silverlight中的可序列化屬性4

using System; 
using System.ComponentModel; 
using System.Collections.Generic; 
using System.Runtime.Serialization; 

我有組件系統,System.Runtime.Serialization添加到我的項目。

後續問題是,如果它不在Silverlight中,我該如何正確序列化一個單例?因爲我正打算使用這裏給出http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

感謝

回答

7

這就是你不能在Silverlight使用.NET屬性的例子,但可以使用DataContract序列化。

對於獨立的(非WCF)序列化/反序列化,有可以使用的三種組分:

System.Runtime.Serialization.DataContractSerializer(從System.Runtime.Serialization.dll) 系統。 Runtime.Serialization.Json.DataContractJsonSerializer(從System.ServiceModel.Web.dll) System.Xml.Serialization.XmlSerializer(從System.Xml.Serialization.dll)使用的DataContractSerializer

一個簡單的例子:

string SerializeWithDCS(object obj) 
{ 
    if (obj == null) throw new ArgumentNullException("obj"); 
    DataContractSerializer dcs = new DataContractSerializer(obj.GetType()); 
    MemoryStream ms = new MemoryStream(); 
    dcs.WriteObject(ms, obj); 
    return Encoding.UTF8.GetString(ms.GetBuffer(), 0, (int)ms.Position); 
} 

來自這個線程的例子:http://forums.silverlight.net/forums/p/23161/82135.aspx

+0

我確實使用DataContract來序列化,但這意味着我可以結束多個單例類的實例。 – user642770 2011-03-22 08:41:01

+0

@ user642770有一個接口,順便說一句;不知道它是否存在於SL中 – 2011-04-18 09:30:19