C# 此XmlWriter不支持base64编码数据

C# 此XmlWriter不支持base64编码数据,c#,.net,xml,xml-serialization,C#,.net,Xml,Xml Serialization,我有一门课是这样的: public class Data { public string Name { get; set; } public int Size { get; set; } public string Value { get; set; } [NonSerialized] public byte[] Bytes; } 当列表点击下面的序列化方法时,它偶尔会随着 “无效操作例外”本 XmlWriter不支持base64 编码数据。” 如您所见,我没

我有一门课是这样的:

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

    [NonSerialized] public byte[] Bytes;
}
列表
点击下面的序列化方法时,它偶尔会随着

“无效操作例外”本 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;
}
私有静态XDocument序列化(T源)
{
var target=newxdocument();
var s=新的XmlSerializer(typeof(T));
使用(XmlWriter=target.CreateWriter())
{
s、 序列化(作者、来源);
}
回报目标;
}
数据将具有
Name
属性,这些属性是用下划线分隔的英文单词。除了添加了数学运算符或数字(它们是数学表达式)外,
属性也将类似


有人知道是什么原因造成的吗?我如何纠正它?

使用
[XmlIgnore]
而不是
[NonSerialized]
。后者用于SOAP和二进制格式化程序,根据:

使用BinaryFormatter或 SoapFormatter类来序列化 对象,使用非序列化数据属性 属性以防止字段被删除 正在序列化。例如,你可以 使用此属性可防止 敏感数据的序列化

对象的目标对象 非序列化数据属性是 公共领域和私人领域 可序列化类。默认情况下, 类不可序列化,除非 它们被标记为 序列化属性。在 序列化过程将对所有公众开放 类的私有字段是 默认情况下序列化。标记的字段 具有非序列化属性的是 在序列化过程中被排除。如果你 正在使用XmlSerializer类 序列化对象时,请使用 XmlIgnoreAttribute类来获取 同样的功能


请注意,我很惊讶您的原始代码甚至可以编译-当我尝试它时,它说
[非序列化]
只能应用于字段…

这个“仅应用于字段”…对不起,这是我在发布之前清理代码的产物。编辑问题以解决它。