Система. Время выполнения. Сериализация. InvalidDataContractException: Никакой метод установки для свойства

Поскольку ошибка показывает, что у меня нет метода set для моего свойства, но я не хочу метод set, это должно быть только для чтения.

10
задан Dirk 3 June 2016 в 08:46
поделиться

3 ответа

Отредактировано: Сделайте сеттер внутренним.

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

15
ответ дан 3 December 2019 в 18:33
поделиться

Помните, что WCF должен создать экземпляр объекта из его сериализованного представления (часто XML), и если свойство не имеет сеттера, оно не может присвоить значение. Объекты не передаются между клиентом и сервером, а только сериализованные представления, поэтому объект должен быть реконструирован на каждом конце.

4
ответ дан 3 December 2019 в 18:33
поделиться

Ваш вопрос немного расплывчатый, но я думаю, это именно тот ответ, который вы ищете:

Сериализация по умолчанию будет работать только для свойств чтения-записи, потому что вы можете ' • регидрировать объект без установки значений свойств. Если вы хотите, чтобы свойство работало только для чтения, вам нужно реализовать интерфейс сериализации самостоятельно, а не просто добавлять атрибуты.

Предполагая, что вы используете сериализацию DataContract, я думаю лучшим вариантом является реализация ISerializable и реализация методов самостоятельно.

2
ответ дан 3 December 2019 в 18:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: