Възможно ли е да има някакъв вид конвертор на типове, който позволява на Sync Framework да третира низ "0"/"1" като булеви стойности за false/true. Според документацията на bool.parse не се поддържа от по подразбиране, така че има ли начин да го заобиколите?
Повече подробности, в случай че някой може да предложи различен подход към този проблем: Имам персонализирана клиентска реализация на Sync Framework за android и тъй като използва SQLite база данни, няма начин да наложа някакъв строг тип данни в полето на таблицата. Бих могъл да измисля конвенцията за обозначаване на булево поле с, да речем, префикс "Е", но това би било гадно. Друго нещо е, че булевите стойности в 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") и по този начин страната на сървъра се проваля, докато се опитва да го анализира до bool.
Между другото, възможно е да го заобиколите, ако правите еднопосочна синхронизация клиент-сървър. Зададох ръчно тип поле на обект от страна на сървъра на байт и Sync Framework добре го използва като "битов" тип база данни. Това решение не работи за сървър към клиент.
"1".Equals(val)
? - person Andrey   schedule 29.04.2011