Поскольку ошибка показывает, что у меня нет метода set для моего свойства, но я не хочу метод set, это должно быть только для чтения.
Отредактировано: Сделайте сеттер внутренним
.
Это все равно можно будет установить внутри сборки, но это хороший трюк, который хорошо работает, когда используется для объектов данных, расположенных в сборке, которая потребляется другими, поскольку эти потребляющие сборки не смогут установить свойство, но различные сериализаторы смогут.
Помните, что WCF должен создать экземпляр объекта из его сериализованного представления (часто XML), и если свойство не имеет сеттера, оно не может присвоить значение. Объекты не передаются между клиентом и сервером, а только сериализованные представления, поэтому объект должен быть реконструирован на каждом конце.
Ваш вопрос немного расплывчатый, но я думаю, это именно тот ответ, который вы ищете:
Сериализация по умолчанию будет работать только для свойств чтения-записи, потому что вы можете ' • регидрировать объект без установки значений свойств. Если вы хотите, чтобы свойство работало только для чтения, вам нужно реализовать интерфейс сериализации самостоятельно, а не просто добавлять атрибуты.
Предполагая, что вы используете сериализацию DataContract, я думаю лучшим вариантом является реализация ISerializable и реализация методов самостоятельно.