Я сталкивался с этой проблемой несколько раз и у меня есть решения, но не то, что мне нравится.Предположим, у вас есть такой класс:
public class MyData
{
public List<string> Values = new List<string>();
}
Допустим, я всегда хочу, чтобы значения имели хотя бы одно значение, и это значение должно быть "По умолчанию".Конструктор может быть:
public MyData()
{
Values.Add("Default");
}
Это гарантирует, что у новых экземпляров всегда будет хотя бы запись «По умолчанию».Проблема заключается в том, что если я XmlSerialize новый экземпляр, он будет сериализован со значением «По умолчанию» в значениях.Само по себе это нормально, но когда я его десериализую, значение Default добавляется в мой конструктор, а затем снова происходит десериализация, вызывая дублирование значения для «Default».
Как я уже говорил выше, ясделал специальные вещи, такие как создание методов Load и Save, которые выполняют сериализацию внутри и проверяют наличие дубликатов, но это может быть опасно, если кто-то сериализует / десериализует экземпляр без прохождения через эти методы.Кто-нибудь когда-нибудь сталкивался с этой проблемой раньше?Существуют ли стандартные способы ее решения?