Сериализуемый класс только для чтения (неизменяемый) - PullRequest
3 голосов
/ 11 июня 2011

Я разработал класс, который имеет два свойства - как строковый тип и список объектов. Я загружаю некоторые xml и десериализовываю их в экземпляр класса, который работает очень хорошо. Я хочу, чтобы все в каждом экземпляре было неизменным. Эти классы представлены в виде API, и для целостности я не хочу, чтобы значения объекта менялись. Если программист хочет чего-то другого, он должен создавать новые экземпляры и устанавливать значения.

Обычно я делал бы это со свойствами ReadOnlyCollection и readonly, но это мешало десериализации. Какие вещи я могу сделать здесь?

Ответы [ 3 ]

2 голосов
/ 11 июня 2011

Не стоит загрязнять модель вашего домена, просто будьте более дружественным к XML сериализатору, чтобы вы могли реализовать ISerializable Interface и написать собственную подпрограмму сериализации для любой коллекции, которая не поддерживает сериализацию.

0 голосов
/ 11 июня 2011

Реализуйте интерфейс ISerializable и сделайте это вручную

0 голосов
/ 11 июня 2011

Вы можете реализовать ISerializable в вашем классе.Таким образом, когда класс десериализован, вызывается специальный конструктор, и вы можете сохранить свой класс действительно неизменным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...