Требуется установщик, чтобы .Net мог установить свойство после передачи (во время десериализации). Вы можете решить эту проблему, реализовав свой собственный объект или, возможно, установив его как внутреннее: internal set { }
На самом деле это скорее вопрос безопасности, поэтому он должен поддерживаться, но поведение .Net по умолчанию - это отображение 1-1 свойств в WSDL. Если внутренний установщик не работает (я ожидаю, что он не будет), и вы не хотите беспокоиться о пользовательском ser / deser, тогда просто добавьте throw new SecurityException()
к установщику.
Вы можете обойти требуемый установщик, реализовав собственную пользовательскую сериализацию , но я не уверен, как будет выглядеть WSDL. Я не пробовал, но подозреваю, что комбинация пользовательской сериализации и внутреннего сеттера решит проблему.
РЕДАКТИРОВАТЬ: Как @Джон Сондерс указывает, что ограничение сеттера может отсутствовать в WCF.