Сериализуемый атрибут в Silverlight 4 - PullRequest
4 голосов
/ 21 марта 2011

Так есть или нет у нас атрибут Serializable в silverlight 4? У меня есть некоторые запутанные ответы в Интернете. Когда я пытаюсь использовать его в своем коде, я получаю ошибку пространства имен. Это мои включает

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

Спасибо

1 Ответ

7 голосов
/ 21 марта 2011

Это атрибут .NET, который вы не можете использовать в Silverlight, но вы можете использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...