4

それでは、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

ありがとう

4

1 に答える 1

7

これは、Silverlight では使用できない .NET 属性ですが、DataContract を使用してシリアル化できます。

スタンドアロン (非 WCF) のシリアル化/逆シリアル化の場合、使用できる 3 つのコンポーネントがあります。

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

于 2011-03-21T18:12:32.847 に答える