У меня есть утилита сериализации, которая сериализует объект в XDocument.Это работает довольно хорошо:
public static class SerializationUtil
{
public static T Deserialize<T>(XDocument doc)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (var reader = doc.Root.CreateReader())
{
return (T)xmlSerializer.Deserialize(reader);
}
}
public static XDocument Serialize<T>(T value)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
XDocument doc = new XDocument(z);
using (var writer = doc.CreateWriter())
{
xmlSerializer.Serialize(writer, value);
}
return doc;
}
Я использовал его довольно счастливо, и вдруг я получаю:
There was an error generating the XML document.
Внутреннее исключение:
This XmlWriter does not support base64 encoded data.
Оказывается, чтометод экземпляра XDocument.CreateWriter()
дает вам средство записи типа System.Xml.XmlWellFormedWriter
, и что этот модуль записи не может записывать данные в кодировке base64 (мой объект содержит байт []).
MSDN, кажется, даже не упоминает этот класс - но я не могу создать какой-либо другой тип писателя из XDocument
.
Я мог бы просто сериализовать в строку, ноя пытался быть умным и избегать всяких хаков.Любой способ сериализации в XDocument, когда для определенных полей требуется base64.