代码之家  ›  专栏  ›  技术社区  ›  µBio

此XmlWriter不支持base64编码数据

  •  5
  • µBio  · 技术社区  · 14 年前

    我有这样一节课:

    public class Data
    {
        public string Name { get; set; }
        public int Size { get; set; }
        public string Value { get; set; }
    
        [NonSerialized] public byte[] Bytes;
    }
    

    List<Data> 点击下面的序列化方法,它偶尔会死掉

    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 属性将按类似的方式显示,除非添加了数学运算符或数字(它们是数学表达式)。

    有人知道是什么原因造成的吗?我怎样才能纠正?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Jon Skeet    14 年前

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

    使用BinaryFormatter或 用于序列化 对象,使用NonSerializedAttribute 正在序列化。例如,你可以 使用此属性可防止 敏感数据的序列化。

    的目标对象 NonSerializedAttribute属性是 可序列化类。默认情况下, 类不能序列化,除非 它们被标记为 序列化属性。在 类的私有字段是 默认情况下序列化。标记的字段 对于非序列化属性 序列化期间排除。如果你 正在使用XmlSerializer类 序列化一个对象,使用 XmlIgnoreAttribute类来获取 相同的功能。

    [非串行化]