草庐IT

SERIALIZATION

全部标签

c# - 在 .NET 中通过线路移动对象时哪种方法最有效?

我一直在使用Web服务通过网络传输数据,这对我来说非常有用。它擅长发送小块数据。一旦您必须移动具有大量属性的深层对象树,生成的XML汤就需要100k数据并将其变成1MB。所以我试过了IISCompression,但这让我不知所措。它很好地压缩了数据,但折衷是压缩/解压缩。然后我通过BinaryFormatter序列化对象并将其发送出去。这更好,但是,编码/解码的速度仍然存在。无论如何,我听说我还停留在00年代,现在有更好的方式通过网络发送数据,例如ProtocolBuffers、MessagePack等...谁能告诉我这些新协议(protocol)是否更适合发送大量数据以及我是否缺少其

c# - 为什么 C# 数组类型 IsSerializable 属性为 True?

我很好奇为什么C#数组的IsSerializable属性返回true。数组没有任何Serializable属性,它们也没有实现ISerializable接口(interface),那么为什么要将IsSerializable属性设置为真?当我尝试下面的代码时,它在控制台中输出“True”:Console.WriteLine(newstring[0].GetType().IsSerializable);输出是:TrueTryitonline我的.NET运行时版本是3.5。 最佳答案 ArraysdoesnothaveanySeriali

c# - XmlTextWriter序列化问题

我正在尝试创建一段xml。我用xsd.exe创建了数据类。根类是MESSAGE。因此,在创建了一个MESSAGE并填充了它的所有属性之后,我将它序列化如下:serializer=newXmlSerializer(typeof(Xsd.MESSAGE));StringWritersw=newStringWriter();serializer.Serialize(sw,response);stringxml=sw.ToString();到目前为止一切顺利,字符串xml包含有效(UTF-16编码)xml。现在我喜欢用UTF-8编码创建xml,所以我这样做:编辑:忘记包含流的声明seriali

c# - 使用 json.net 在序列化期间合并两个对象?

我遇到了如下情况,谁能帮我实现一下?例如,如果我有类(class):-publicclassSample{publicStringname{get;set;}publicMyClassmyclass{get;set;}}我的Myclass将如下所示:publicclassMyClass{publicStringp1{get;set;}publicStringp2{get;set;}}当我使用Json.net序列化Sample类的对象时,我得到如下结果并且运行良好。{"name":"...","myclass":{"p1":"...","p2":"..."}}它是正确的,但我想知道是否可

c# - .NET 4.5 中的序列化中断

我们有一个只发生在.NET4.5中的序列化问题-相同的代码在.NET4中工作正常。我们正在尝试用几个字段序列化一个继承类型,基类和继承类都用标记序列化属性。我们在Web服务的客户端得到一个异常,说服务器中有一个MethodAccessException,服务器本身没有抛出任何异常,这似乎是客户端序列化过程中的问题。请务必注意,我们是在.NET4中编译的,而不是.4.5更新:在实现ISerailize并忽略“Value”属性后,程序确实运行正常,但这意味着我们不得不放弃序列化该字段。任何帮助将不胜感激。谢谢,欧麦异常详情:System.Web.Services.Protocols.Soa

c# - 为什么当我使用 JSON.NET 反序列化时会忽略我的默认值?

我使用JSON.NET作为我的主要序列化器。这是我的模型,看我设置了一些JSONProperties和一个DefaultValue.publicclassAssignmentContentItem{[JsonProperty("Id")]publicstringId{get;set;}[JsonProperty("Qty")][DefaultValue(1)]publicintQuantity{get;set;}}当我序列化List时,它做得很好:privatestaticJsonSerializerSettingss=newJsonSerializerSettings{Default

c# - 序列化时如何跳过xml声明?

我正在尝试输出一个没有xmlhead的xml文件我试过:Typet=obj.GetType();XmlSerializerxs=newXmlSerializer(t);XmlWriterxw=XmlWriter.Create(@"company.xml",newXmlWriterSettings(){OmitXmlDeclaration=true,Indent=true});xs.Serialize(xw,obj);xw.Close();但它仍然在xml文件中输出。我不想要弦乐技巧。有什么想法吗? 最佳答案 将Conformance

c# - 通过 WCF 发送元组对象?

System.Tuple类是否受WCF的数据契约序列化程序支持(即,我能否将Tuple对象传递给WCF调用和/或接收它们作为部分或全部结果)?我找到了thispage,但不是我所希望的明确、明确的“您可以使用WCF发送和接收元组”的答案。我猜你可以,只要Tuple本身的所有类型within都受DataContractSerializer支持——任何人都可以向我提供更明确的答案?谢谢。 最佳答案 Tuple类型标有SerializableAttribute,因此,如果您在其中存储的类型是可序列化的,那么它们也应该能够被WCF序列化。查

c# - 反序列化向后兼容性

我正在尝试使用旧版本的应用程序反序列化“SomeClass”。我得到以下异常System.Runtime.Serialization.SerializationException:TheObjectManagerfoundaninvalidnumberoffixups.ThisusuallyindicatesaproblemintheFormatter.当我序列化版本0.9并尝试使用版本0.8反序列化时,反序列化抛出异常。我认为OptionalField属性可以解决问题,但事实并非如此。//Version0.8[Serializable()]classFoo{Barb;}//Versi

c# - 在反序列化期间使用 XML 修饰指定默认值

我在反序列化某些XML时遇到问题;第三方提供的XML非常冗长,因此如果没有为特定元素设置值,它将提供空元素(例如)。这对某些元素来说是个问题,例如,那些用于存储整数的元素。我可以控制第三方,所以我可以让他们指定一个默认值(0),或者我可以让他们完全省略这些元素。这两个都应该避免这个问题。但是,将来可能会出现我们没有那么多控制权的情况-在这种情况下,是否有一种方法可以通过装饰来指定默认值?[XmlElement("myinteger")=0???]publicintMyInteger{get{returnmyInteger;}set{myInteger=value;}}