Xamarin.ios system.runtime.serialization和mvvmcross

Xamarin.ios system.runtime.serialization和mvvmcross,xamarin.ios,xamarin.android,xamarin,mvvmcross,portable-class-library,Xamarin.ios,Xamarin.android,Xamarin,Mvvmcross,Portable Class Library,我被这个问题缠住了,似乎无法解决它。我有一个PCL和一个.Droid和.iOS客户端的逻辑 我需要在逻辑中使用[serializable]属性,因此我需要添加对system.runtime.serialization的引用。问题是android和iOS有一个不同的dll我如何管理它?我以前没有遇到过这个问题,因为我在项目之间使用了共享文件,所以每个项目都有自己对正确的system.runtime.serialization的引用,并且我可以使用[serializable]属性而不会出现问题 我错

我被这个问题缠住了,似乎无法解决它。我有一个PCL和一个.Droid和.iOS客户端的逻辑

我需要在逻辑中使用[serializable]属性,因此我需要添加对system.runtime.serialization的引用。问题是android和iOS有一个不同的dll我如何管理它?我以前没有遇到过这个问题,因为我在项目之间使用了共享文件,所以每个项目都有自己对正确的system.runtime.serialization的引用,并且我可以使用[serializable]属性而不会出现问题

我错过什么了吗

谢谢


Amit

一般来说,我建议避免在可移植代码中尝试使用
SerializableAttribute
。这种类型的序列化基本上是不可移植的。但是,如果您确实需要这样做,那么该属性实际上是经过特殊处理的,并且由类型上的一个位来表示,而不是普通属性。因此,如果您在PCL中使用相同的名称和命名空间定义自己的属性,编译器将发出该位,所有内容都可能按照您的需要工作。

我建议得出我的结论,即“不要使用PCL”:。特别是如果只是您的代码,而您正在Xamarin.iOS/Droid之间进行拆分,则只需共享.cs文件即可保存头发。@Erik Kerber您在PCL中遇到过任何其他问题吗?介意共享为什么需要
SerializableAttribute
?除非您正在与ASP.NET或类似的对类进行隐式序列化的程序共享代码,否则在没有它的情况下仍有很多方法可以继续。@Amit您已经看到了,共享代码要比共享程序集容易得多。当您可以拥有平台的全部功能时,为什么要将代码限制在PCL支持的范围内?在大多数情况下,平台之间的任何差异都可以通过#ifdef解决。如果您正在创建一个供其他人使用的库,并且单个.dll很方便,那么PCL很有用。如果您正在处理自己的项目,那么代码共享是目前为止最好的选择。在PCL中执行序列化的推荐方法是什么?@pauldendulk DataContract serialization,或Json.NET