我已经遇到过这个问题几次,并为它提供解决方案,但没有我喜欢的解决方案。考虑有一个类:
public class MyData
{
public List<string> Values = new List<string>();
}
假设我总是希望Value至少有一个值,这个值应该是“Default”。构造函数可能是:
public MyData()
{
Values.Add("Default");
}
这可以保证新实例始终至少具有“默认”条目。问题是如果我XmlSerialize一个新实例,它将使用Values中的“Default”值进行序列化。这本身就没问题,但是当我反序列化它时,默认值会在我的构造函数中添加,然后再次通过反序列化,导致“Default”的重复值。
就像我上面提到的,我做了一些特殊的事情,比如制作Load和Save方法,在内部进行序列化并检查重复项,但如果有人序列化/反序列化实例而不通过这些方法,则可能会很危险。以前有没有人遇到过这个问题?有没有标准的解决方法?