Сериализация
Atom
11/16/2010


Добрый день, Михаил.
Пытаюсь воспользоваться вашей сериализацией. Возникло несколько вопросов:1) как объявить XML-атрибут. 2)как объявить корень сериализации( то есть название типа) 3) есть ли у Вас
какая-нить документация по вашей сериализации. Пришлось отказаться от родного XmlSerializer ибо как я узнал он не умеет десериализовать типы типа internal. Вот пример моего кода:
Code

[XmlRoot(ElementName = "result")]
public class CommandResult
{
private static XmlSerializer _serializer;

protected static XmlSerializer Serializer
{
get
{
if (_serializer == null)
{
_serializer = new XmlSerializer(typeof(CommandResult));
}
return _serializer;
}
}

[XmlAttribute("success")]
public bool Success
{
get;
set;
}

[XmlAttribute("transactionid")]
public String TransactionId
{
get;
set;
}

[XmlElement("message")]
public String Message
{
get;
set;
}

[XmlIgnore]
public int? Difference
{
get;
set;
}

[XmlAttribute("diff")]
public String DifferenceAsString
{
get
{
if (Difference == null) return null;
else
return ((int)Difference).ToString();
}
set
{
if (value == null) Difference = null;
else
Difference = int.Parse(value);
}

}

public static CommandResult FromXmlString(String s)
{
s = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + s;
XmlSerializer serializer = Serializer;
MemoryStream str = new MemoryStream(Encoding.UTF8.GetBytes(s));
CommandResult result = (CommandResult)serializer.Deserialize(str);
str.Close();
return result;
}
}

Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 11/17/2010
Reply


XmlRootAttribute == EntityAttribute.
XmlElementAttribute == FieldAttribute
XmlIgnoreAttribute == IgnoreAttribute

var serializer = new XmlSerializer<CommandResult>();
serializer.Deserialize(serializer.Serialize(new CommandResult());
Thanks:

anothar

Avatar
Date: 11/17/2010
Reply


А XmlAttribute?
Thanks:

Mikhail Sukhov

Avatar
Date: 11/18/2010
Reply


Андрей Ефимов
А XmlAttribute?


Увы нет. Умеет только в ноды сериализовать.
Thanks:

anothar

Avatar
Date: 11/18/2010
Reply


Печально :( Придется как-нить пошаманить...
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy