Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Проблемы с сереализацией


Автор: Levon11 15.9.2008, 17:23
Добрый день!!

У меня всё никак не выходит сереализация класса в стрим... smile  Класс мой, но кажется в нём всё нормально.. Оказывется объект класса WindowsIdentity не сереализуется.. 
Может кто с этим сталкивался??? Спасибо. )) 

Автор: mihryak 15.9.2008, 23:27
Levon11, какая именно сериализация?
исли xml, почитай http://www.gotdotnet.ru/LearnDotNet/NETFramework/581.aspx, да и бинарная в большинстве случаев отличается не так уж сильно

ещё бы неплохо код класса увидеть, есть куча причин, по которым сериализация может не заработать

Автор: Levon11 16.9.2008, 15:20
Код

            WindowsIdentity wi = WindowsIdentity.GetCurrent();

            XmlSerializer serializer = new XmlSerializer(typeof(WindowsIdentity));

            MemoryStream stream = new MemoryStream();

            TextWriter writer = new StreamWriter(stream);

            serializer.Serialize(writer, wi);


Я попытался сереализовать только WindowsIdentity.
На последней команде этот код даёт ошибку.
Не понимаю почему: ведь WindowsIdentity помечен как [Serializable].
А мой класс без WindowsIdentity замечательно сереализуется.

Автор: informatik 16.9.2008, 15:42
[Serializable] данный атрибут вовсе не означает что класс будет сериализоваться XML сериилизатором... для  XML он должен реализовывать интерфейс IXmlSerializable. Для данного класса можно использовать  SoapFormater и BinaryFormater.  

Автор: mihryak 16.9.2008, 17:32
Цитата(informatik @  16.9.2008,  16:42 Найти цитируемый пост)
для  XML он должен реализовывать интерфейс IXmlSerializable

совсем не обязательно
в данном случае сериализация не проходит из-за того, что одно из свойств (xml-сериализация использует только свойства get-set) имеет тип класса, у которого нет конструктора без параметров (это ещё одно необходимое условие сериализации)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)