Вы часто видите это, когда результат должен быть сериализован в веб-сервисе или с использованием XML или двоичного сериализатора.
Это лениво и неряшливо, но это случается часто. Это оставляет объект с «внешним видом», который свойство может быть установлено. Если это сделано для того, чтобы реализовать интерфейс и разрешить компиляцию, то разработчик, который сделал это, должен быть свободно избит по голове и плечам тупым предметом, поскольку он только что сломал интерфейс. Если есть веская причина, по которой он не может быть реализован, то разработчик должен отправить его обратно на рассмотрение архитектору. Вы не просто оставляете пустые методы-заглушки при реализации интерфейса. Если у вас нет метода, определенного для реализации в данный момент, то, по крайней мере, сгенерируйте новое NotImplementedException, чтобы модульные тесты его поймали.
Что касается сериализации: свойства ReadOnly не включаются в обычную сериализацию, и это может сделать свойство недоступным для клиента веб-службы. (ref: Свойства, доступные только для чтения, не могут быть предоставлены веб-службами XML .) Это одна из причин, по которой мы все должны перейти на WCF и DataContracts. Если вы примете этот класс в качестве типа ввода для метода через WCF, то снова получите тупой объект.