[英]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.