System.Runtime.Serialization.InvalidDataContractException: не установлен метод для свойства - PullRequest
10 голосов
/ 02 марта 2010

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

Ответы [ 3 ]

15 голосов
/ 02 марта 2010

Отредактировано: сделать сеттер internal.

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

4 голосов
/ 02 марта 2010

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

2 голосов
/ 02 марта 2010

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

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

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

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