簡體   English   中英

將帶有byte []成員的對象序列化到XDocument的最優雅方法?

[英]Most elegant way to serialize an object with byte[] members to an XDocument?

我有一個序列化實用程序,可將對象序列化為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編碼的數據(我的對象包含byte [])。

MSDN甚至似乎都沒有提到此類-但是我似乎無法從XDocument創建任何其他類型的writer。

我可以序列化為字符串,但是我試圖變得聰明,避免使用任何黑客手段。 當某些字段需要base64時,可以使用任何方式序列化到XDocument。

根據文檔 ,沒有字節的余量。 一個替代的base64編碼字符串屬性可能是您最好的選擇(如果是設計使然,那么這是hack嗎?)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM