Как добавить значения по умолчанию в списки XmlSerialized без дубликатов? - PullRequest
1 голос
/ 25 февраля 2012

Я сталкивался с этой проблемой несколько раз и у меня есть решения, но не то, что мне нравится.Предположим, у вас есть такой класс:

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

}

Допустим, я всегда хочу, чтобы значения имели хотя бы одно значение, и это значение должно быть "По умолчанию".Конструктор может быть:

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

Это гарантирует, что у новых экземпляров всегда будет хотя бы запись «По умолчанию».Проблема заключается в том, что если я XmlSerialize новый экземпляр, он будет сериализован со значением «По умолчанию» в значениях.Само по себе это нормально, но когда я его десериализую, значение Default добавляется в мой конструктор, а затем снова происходит десериализация, вызывая дублирование значения для «Default».

Как я уже говорил выше, ясделал специальные вещи, такие как создание методов Load и Save, которые выполняют сериализацию внутри и проверяют наличие дубликатов, но это может быть опасно, если кто-то сериализует / десериализует экземпляр без прохождения через эти методы.Кто-нибудь когда-нибудь сталкивался с этой проблемой раньше?Существуют ли стандартные способы ее решения?

...