system.runtime.serialization и mvvmcross

Я застрял с этой проблемой, и я не могу ее решить. У меня есть моя логика в PCL и клиентах .Droid и .iOS.

Мне нужно использовать атрибут [serializable] в моей логике, поэтому мне нужно добавить ссылку на system.runtime.serialization. Проблема в том, что для Android и iOS есть разные dll, как мне с этим справиться? Я не сталкивался с этой проблемой раньше, потому что я использовал общие файлы между проектами, поэтому каждый проект имел свою собственную ссылку на правильную 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
@ Эрик Кербер, сталкивались ли вы с какими-либо другими проблемами с 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