Скажем, у меня есть простой класс, как это
[Serializeable]
public class MyClass
{
public MyClass()
{
this.MyCollection = new List<int>();
}
public List<int> MyCollection { get; private set;}
}
Если я пытаюсь десериализовать это с помощью XmlSerializer, я получаю сообщение об ошибке, в котором говорится, что MyCollection доступна только для чтения и не может быть назначена. Однако я не хочу делать сеттер общедоступным, поскольку это может вызвать всевозможные проблемы, если пользователь класса назначит его. FxCop справедливо предупреждает об этом: Свойства коллекции должны быть доступны только для чтения
Однако внизу страницы в сообществе добавлено следующее:
XmlSerializer понимает только чтение
Коллекция Коллекция
свойства не должны быть
чтение-запись для XmlSerializer для
сериализовать и десериализовать содержимое
правильно. XmlSerializer будет выглядеть
для метода под названием Добавить в коллекцию
свойства, которые реализуют ICollection
или IEnumerable, и используйте это для
заполнить коллекцию, когда
десериализация экземпляра владельца
тип.
Однако, похоже, это не так (как я получаю InvalidOperationException). Что я могу сделать, что соответствует наилучшей практике сохранения приватности установщика свойств, в то же время позволяя мне использовать XmlSerializer?