字符串集合值在保存时重复,然后从XML重新加载它
本文关键字:新加载 XML 加载 集合 保存 字符串 然后 | 更新日期: 2023-09-27 18:05:30
嗯,我得到了非常奇怪的问题,当我在属性网格中填充一个值的字符串集合时,然后我将其保存到XML,当我重新加载XML并检查字符串集合时,我发现值是重复的。
每次保存和重新加载时都会出现
你没有发布任何代码,所以我要猜测问题,正如你所描述的,你正在序列化一个字符串集合到xml文件,但是当你反序列化它时,你注意到记录是重复的,这是常见的情况,当你的集合首先在类中具有默认值,所以当你从xml反序列化它时,xml序列化器不会创建一个新的字符串集合,相反,它使用列表中的Add
方法,并将字符串附加到现有集合中。例子:
[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行:当我做_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; }
}