【问题标题】:Xml Serialization of a Collection with Properties具有属性的集合的 Xml 序列化
【发布时间】:2011-07-16 10:55:07
【问题描述】:

我有这个简单的课程:

public class MappingCollection<T> : List<T>
{
    private int _declaredTotal = -1;
    public int DeclaredTotal { get { return _declaredTotal; } set { _declaredTotal = value; } }
}

我在另一个名为“映射”的类中使用它。 “映射”的实例被序列化为 xml。 Mapping 的所有其他属性都被正确序列化(类、标量属性等)。

当它序列化我创建的这个自定义列表时,列表元素会正确序列化,但“DeclaredTotal”属性没有。事实上,它总是序列化为 -1,如果我删除默认值,它总是序列化为 0。

我没有收到任何运行时错误,所以我真的不知道问题出在哪里。

有人知道如何解决这种奇怪的行为吗?

【问题讨论】:

  • DeclaredTotal 在哪里设置?也许您可以使用自动属性对其进行测试
  • 已经做到了。该对象具有我设置的正确值,无论是使用自动属性还是如上所示。仍然在调用 Serialize 时,“DeclaredTotal”属性不会被序列化。
  • 如何将属性 [Serializable] 放在 MappingCollection 之上
  • 那也不行。类本身已经被序列化了。包含的元素(因为它是一个列表)也被序列化。只是那个整数属性没有。
  • 你能告诉我们你是如何序列化的代码吗?

标签: c# xml serialization xml-serialization


【解决方案1】:

如果您找不到解决方案,您可以尝试使用不同的 xml-serializer,例如 sharpserializerDataContractSerializer

【讨论】:

    【解决方案2】:

    看看this similar question

    看起来您必须使 List 成为 MappingCollection 中的属性,而不是扩展 List,因为 XmlSerializer 处理集合类型的特殊方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多