簡體   English   中英

此XmlWriter不支持base64編碼數據

[英]This XmlWriter does not support base64 encoded data

我有一個這樣的課:

public class Data
{
    public string Name { get; set; }
    public int Size { get; set; }
    public string Value { get; set; }

    [NonSerialized] public byte[] Bytes;
}

List<Data>命中下面的序列化方法時,它偶爾會死掉

InvalidOperationException“此XmlWriter不支持base64編碼數據。”

如您所見,我不是直接編碼任何東西,只是使用默認的序列化機制。

private static XDocument Serialize<T>( T source )
{
    var target = new XDocument( );
    var s = new XmlSerializer( typeof( T ) );
    using( XmlWriter writer = target.CreateWriter( ) )
    {
        s.Serialize( writer, source );
    }
    return target;
}

數據將具有Name屬性,這些屬性是由下划線分隔的英語單詞。 除了添加了數學運算符或數字(它們是數學表達式)之外, Value屬性將類似。

有誰知道是什么導致它以及我如何糾正它?

使用[XmlIgnore]而不是[NonSerialized] 根據MSDN ,后者適用於SOAP和二進制格式化程序:

使用BinaryFormatter或SoapFormatter類序列化對象時,請使用NonSerializedAttribute屬性來阻止字段序列化。 例如,您可以使用此屬性來阻止敏感數據的序列化。

NonSerializedAttribute屬性的目標對象是可序列化類的公共字段和私有字段。 默認情況下,除非用SerializableAttribute標記,否則類不可序列化。 在序列化過程中,默認情況下序列化類的所有公共和私有字段。 標記為NonSerializedAttribute的字段在序列化期間被排除。 如果您使用XmlSerializer類來序列化對象,請使用XmlIgnoreAttribute類來獲取相同的功能。

請注意,我很驚訝您的原始代碼甚至編譯 - 當我嘗試它時,它說[NonSerialized]只能應用於字段......

暫無
暫無

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

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