那么我们还是在Silverlight 4中没有Serializable属性?我在互联网上有一些令人困惑的回答。当我尝试在我的代码中使用它时,我得到一个命名空间错误。这些是我的包含
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Runtime.Serialization;
我将程序集System,System.Runtime.Serialization添加到我的项目中。
后续问题是,如果在Silverlight中不可用,我如何正确序列化单例?由于我打算使用此处给出的示例http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx
由于
答案 0 :(得分:7)
这是一个不能在Silverlight中使用的.NET属性,但您可以使用DataContract进行序列化。
对于独立(非WCF)序列化/反序列化,可以使用三个组件:
System.Runtime.Serialization.DataContractSerializer(来自System.Runtime.Serialization.dll) System.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