当前位置: 首页 > 编程语言 > C#

IsitpossibletoserializealistofSystem.ObjectobjectsusingProtocolBuffers分享

时间:2023-04-11 02:32:37 C#

,整数,十进制,字符串)。列出myObjects=newList();myObjects.Add(3);myObjects.Add(3.9m);myObjects.Add(DateTime.Now);myObjects.Add("你好");我可以使用protobuf-netList对此进行序列化,但反序列化总是抛出异常:“附加信息:类型不是预期的,合同不是推断的:System.Object”。使用(varms=newMemoryStream()){Serializer.Serialize(ms,list2);varbytes=ms.ToArray();ms.Position=0;varclone=Serializer.Deserialize(typeof(List),ms);//Throwsexception}我没有任何明确的合同,我想这就是问题所在?但是,我确实知道序列化对象的预期类型是什么,但我该如何告诉protobuf-net?检查这些以了解为什么这是要走的路:需要无参数构造函数为什么动态而不是对象不起作用为什么DynamicType=true不起作用protobuf-net的创建者需要一个抽象基类和具体实现为什么不object[ProtoContract][ProtoInclude(1,typeof(ObjectWrapper))][ProtoInclude(2,typeof(ObjectWrapper))][ProtoInclude(3,typeof(ObjectWrapper))][ProtoInclude(4,typeof(ObjectWrapper)))]抽象classObjectWrapper{protectedObjectWrapper(){}abstractpublicobjectObjectValue{get;){this.Value=t;}[ProtoIgnore()]publicoverrideobjectObjectValue{get{returnValue;}设置{值=(T)值;}}[ProtoMember(1)]publicT值{ge吨;放;}}测试以上是C#学习教程:是否可以使用protocolbuffer序列化System.Object对象列表共享的所有内容。遵循—varmyObjects=newList();myObjects.Add(newObjectWrapper(3));myObjects.Add(newObjectWrapper(3.9m));myObjects.Add(newObjectWrapper(DateTime.Now));myObjects.Add(newObjectWrapper("HELLO"));varclone=Serializer.DeepClone(myObjects);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: