【问题标题】:String collection values duplicated when I save it then reload it from XML保存时重复的字符串集合值然后从 XML 重新加载
【发布时间】:2011-08-11 12:14:03
【问题描述】:

我遇到了一个非常奇怪的问题,当我在属性网格中填充一个字符串集合时,我将它保存到 XML,当我重新加载 XML 并检查字符串集合时,我发现值重复。

每次我保存和重新加载时都会发生这种情况。

【问题讨论】:

  • 能否请您发布实际代码?
  • 请提供一个简短但完整的程序来演示该问题。目前我们只能说,您没有向我们展示的代码中可能存在错误。
  • 加载前不清除集合?
  • 并选择该语言的版本,或者至少不要选择特定版本。一个版本中的方法可能不适用于另一个版本。
  • 谢谢大家,我会尽快发布代码..

标签: c# collections xml-serialization c#-2.0 propertygrid


【解决方案1】:

您没有发布任何代码,所以我将猜测这个问题,正如您所描述的,您正在将一个字符串集合序列化为 xml 文件,但是当您反序列化它时,您注意到记录重复,这是常见的情况,当你的集合首先在类中有默认值时,所以当你从 xml 反序列化它时,xml 序列化程序不会创建新的字符串集合,而是使用方法 Add in列表并将字符串附加到您现有的集合中。示例:

[Serializable()]
public class Foo
{
    private List<string> _myList = new List<string>(new string[] { "Some", "Data" });

    public List<string> MyList
    {
        get { _myList = value;}
        set { return _myList; }
    }

    public Foo() {}
}

在上一个类“Foo”中,如果新建一个实例Foo foo = new Foo();并序列化为xml,就可以序列化了,但是反序列化的时候会发现集合项已经被重复"Some, Data, Some, Data"

【讨论】:

    【解决方案2】:

    这个问题是如何解决的: 在第 2 行:当我将 _AttributesCustomList 设为私有时,当我加载 XML 时,字符串集合不会重复... 我真的不知道为什么,但无论如何问题已经解决了..

        [XmlElement("AttributesCustomList")]
        public list<string> _AttributesCustomList;
        [CategoryAttribute("Custom"), ReadOnly(false),
        Description("This property is customised to put new attributes")]
        //[RefreshProperties(RefreshProperties.All)]
        [RulesCriteria("Custom AttributesList")]
        public list<string> AttributesCustomList
        {
            get { return _AttributesCustomList; }
            set { _AttributesCustomList = value; }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 2018-08-19
      • 2016-10-01
      • 2012-05-22
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      相关资源
      最近更新 更多