Возможно ли иметь какой-то преобразователь типов, который позволяет Sync Framework обрабатывать строку «0»/«1» как логические значения для false/true. Согласно документации bool.parse, он не поддерживается по умолчанию, так есть ли способ обойти это?
Более подробная информация на случай, если кто-то может предложить другой подход к этой проблеме: у меня есть собственная реализация клиента Sync Framework для Android, и, поскольку она использует базу данных SQLite, у меня нет возможности применить какой-либо строгий тип данных в поле таблицы. Я мог бы придумать соглашение для обозначения логического поля, скажем, префиксом «Is», но это было бы противно. Другое дело, что логические значения в SQLite обрабатываются как числовой тип, поэтому вставка/обновление логического значения false/true в базу данных SQLite автоматически преобразует их в 0/1, и я не хочу вводить некоторое преобразование TRUE/FALSE = 1/0 на стороне Android. .
Любые мысли приветствуются.
[ОБНОВЛЕНИЕ] Дополнительные сведения: серверная часть состоит из некоторых служб, использующих Microsoft Sync Framework 4.0 CTP. Настраивать особо нечего, кроме создания области действия и так далее. Клиентская сторона генерирует набор изменений и передает его на сервер в формате JSON. Набор изменений поступает из базы данных SQLite (а SQLite не имеет собственного логического представления, кроме числового 0/1), поэтому при чтении базы данных нет никаких указаний на то, что поступающие данные имеют логический тип. Значение поля сериализуется в объект JSON в виде строки с числовым значением ("0" или "1"), и поэтому на стороне сервера происходит сбой при попытке проанализировать его в логическое значение.
Кстати, это можно обойти, если выполнять одностороннюю синхронизацию клиент-сервер. Я вручную установил тип поля объекта на стороне сервера в byte, и Sync Framework прекрасно использует его как «битовый» тип базы данных. Этот обходной путь не работает для связи сервер-клиент.
"1".Equals(val)
? - person Andrey   schedule 29.04.2011