C# 如何向XmlSerialized列表中添加默认值而不产生重复值?

C# 如何向XmlSerialized列表中添加默认值而不产生重复值?,c#,xml-serialization,C#,Xml Serialization,这个问题我已经遇到过好几次了,并且有了解决办法,但是没有一个是我喜欢的。考虑一个类: public class MyData { public List<string> Values = new List<string>(); } 这保证了新实例将始终至少具有默认条目。问题是,如果我XmlSerialize一个新实例,它将使用值中的默认值进行序列化。这本身是可以的,但当我反序列化它时,默认值会添加到构造函数中,然后再次通过反序列化,导致默认值重复 正如我上面

这个问题我已经遇到过好几次了,并且有了解决办法,但是没有一个是我喜欢的。考虑一个类:

public class MyData
{
     public List<string> Values = new List<string>();

}
这保证了新实例将始终至少具有默认条目。问题是,如果我XmlSerialize一个新实例,它将使用值中的默认值进行序列化。这本身是可以的,但当我反序列化它时,默认值会添加到构造函数中,然后再次通过反序列化,导致默认值重复

正如我上面提到的,我做了一些特殊的事情,比如创建Load和Save方法,这些方法在内部执行序列化并检查重复项,但是如果有人在不通过这些方法的情况下序列化/反序列化实例,这可能会很危险。以前有人遇到过这个问题吗?有没有标准的解决方法

public MyData()
{
    Values.Add("Default");
}