【问题标题】:Error while serializing a class to XML将类序列化为 XML 时出错
【发布时间】:2014-02-27 12:12:35
【问题描述】:

我正在序列化 Linq 对象以使用 XmlSerializer 但我得到了

"反映类型时出现错误 'System.Collections.Generic.List`1"

我用 Serilizable 属性扩展了 Linq 对象,我在这里做错了什么?

[Serializable]
public partial class Customer
{
}

[Serializable]
public partial class Comment
{
}


[Serializable]
public class CustomerArchive
{
    public Customer MyCustomer{ get; set; }
    public Comment MyComment { get; set; }
}



 internal static void Serialize(IEnumerable<CustomerArchive> archive, string fileName)
 {
      var serializer = new XmlSerializer(typeof(List<CustomerArchive>)); // Error

      using (var stream = File.Create(fileName))
      {
           using (var sw = new StreamWriter(stream))
           using (var writer = new XmlTextWriter(sw)
           {
                Indentation = 5,
                Formatting = Formatting.Indented
           })
           serializer.Serialize(writer, new List<CustomerArchive>(archive));
       }
 }

【问题讨论】:

  • 你在哪一行得到错误
  • var serializer = new XmlSerializer(typeof(List));在这条线上..:-(
  • 内部异常告诉你什么?继续关注内部异常,直到到达最后一个。
  • 你检查过内部异常吗?
  • 类似错误{“反映类型'CustomerArchive'的错误。”}反映属性'MyCustomer'的错误

标签: c# linq serialization xml-serialization


【解决方案1】:

我认为MyCustomer 类中有一些属性不能被XML Serializer 序列化。比如一个通用的Dictionary&lt;&gt;

[XmlIgnore] 属性放在这些属性上,然后重试。如果在那之后您的代码可以正常工作,您只需要创建一些可以序列化为 XML 并返回而没有任何问题的代理属性。

【讨论】:

  • 谢谢,[NonSerialized] 没用,但 [System.Xml.Serialization.XmlIgnore] 完成了我的工作
  • 不错的收获 :) 这就是我想要的。
猜你喜欢
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
相关资源
最近更新 更多