system.runtime.serialization и mvvmcross

Заседнал съм с този проблем и изглежда не мога да го разреша. Имам моята логика в PCL и .Droid и .iOS клиенти.

Трябва да използвам атрибута [serializable] в моята логика, така че трябва да добавя препратка към system.runtime.serialization. Проблемът е, че има различна dll за android и iOS, как мога да управлявам това? Не съм срещал този проблем преди, защото използвах споделени файлове между проектите, така че всеки проект имаше собствена препратка към правилната system.runtime.serialization и можех да използвам атрибута [serializable] без проблеми.

Да не съм пропуснал нещо?

Благодаря

Амит


person Amit Raz    schedule 19.11.2013    source източник
comment
Бих могъл да предложа да стигна до заключението, което имам, което е да не използвате PCL :). Особено ако това е само вашият код и се разделяте между Xamarin.iOS/Droid, ще спестите косми, просто споделяйки .cs файлове.   -  person Erik Kerber    schedule 20.11.2013
comment
@Erik Kerber срещали ли сте други проблеми с PCL?   -  person Amit Raz    schedule 20.11.2013
comment
Споделяне на мисли защо ви трябва SerializableAttribute? Освен ако не споделяте кода си с ASP.NET или нещо подобно, което прави имплицитна сериализация на вашите класове, има начини да продължите без него.   -  person Alexey    schedule 20.11.2013
comment
@Amit Вече го видяхте, много по-лесно е да споделяте код, отколкото да споделяте сборки. Защо да ограничавате кода си до това, което се поддържа от PCL, когато вместо това можете да разполагате с пълната мощност на вашата платформа? В повечето случаи всяка разлика в платформите може да бъде разрешена с #ifdefs. PCL са полезни, ако създавате библиотека, предназначена да се използва от други, и един .dll е удобен. Ако просто работите върху свой собствен проект, тогава споделянето на код за мен е най-добрият вариант.   -  person Erik Kerber    schedule 20.11.2013


Отговори (1)


Като цяло бих препоръчал да избягвате опитите да използвате SerializableAttribute в преносим код. Този тип сериализация по принцип не е преносим. Въпреки това, ако наистина трябва да го направите, този атрибут всъщност се третира специално и е представен от бит за типа, за разлика от нормален атрибут. Така че, ако дефинирате свой собствен атрибут със същото име и пространство от имена в PCL, компилаторът ще излъчи бита и всичко може просто да работи, както трябва.

person Daniel Plaisted    schedule 20.11.2013
comment
Какъв е препоръчителният начин за извършване на сериализация в PCL? - person pauldendulk; 21.11.2013
comment
@pauldendulk DataContract сериализация или Json.NET - person Daniel Plaisted; 21.11.2013