BinaryFormatter在CF中是不存在的。解决方案?我需要在紧凑型框架上以字节为单位序列化/反序列化obj,但是没有BinaryFormatter,我该怎么做?谢谢。这是我在服务器端使用的类,我也想在客户端使用它(WindowsMobile6设备)publicclassSerializer{publicbyte[]SerializeObject(objectobj){if(obj==null)返回空值;使用(MemoryStreamstream=newMemoryStream()){BinaryFormatterformatter=newBinaryFormatter();formatter.Serialize(stream,obj);返回stream.ToArray();}}publicobjectDeserializeObject(byte[]bytes){if(bytes==null)returnnull;BinaryFormatter格式化程序=newBinaryFormatter();MemoryStreamstream=newMemoryStream(bytes);返回格式化程序。反序列化(流);对于您的场景,您可以考虑切换protobuf-net;BinaryFormatter的格式不同,因此客户端和服务器都需要进行调整,但它是一种适用于两个平台的二进制序列化API,并且通常更小,作为一个额外的附加组件。该格式实际上是google的“ProtocolBuffers”编码;非常快,独立于平台,并且在添加属性等时设计灵活。它是免费的。有些傻瓜就放弃了。我们最初使用AsGoodAsIt来获得紧凑的框架序列化,它与完整的框架BinaryFormatter完全二进制兼容,但每个设备的许可证是一个交易破坏者。根据您需要支持的设备数量,它可能适合您。我们还发现BinaryFormatter确实有内存和时间开销-不接近SoapFormatter的成本,但对于CE设备来说仍然很重要。最后,我们创建了一个序列化框架,使用BinaryWriter和BinaryReader以及System.Activator来创建类。这使我们能够消除与内置序列化相关的大量内存和时间开销,但代价是对对象进行仔细的版本控制和对字段进行排序。应该注意的是,我们的自定义序列化工作早于protbuf.net的发布。您可以在此处找到CF所需的实现:http://www.codeproject.com/KB/cs/CF_serializer.aspx也很有趣:Howtoserializeobjectsincompactframework我自己没有尝试过,因为我从来不需要它。对不起,如果我只发布几个链接。.NETCompactFramework与来自MSDN的.NETFramework之间的差异:序列化由于大小和性能问题,.NETCompactFramework不支持使用BinaryFormatter的二进制序列化,也不支持使用SoapFormatter的SOAP序列化。但是,.NETCompactFramework通过在XMLWeb服务中使用SOAP和将数据集序列化为XML来提供对传输对象数据的序列化支持。以上是C#学习教程:CF中不存在BinaryFormatter。解决方案?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
