草庐IT

c# - 使用 Web API 和 JSON.NET 序列化对象时防止 $id/$ref

我似乎无法阻止WebAPI/JSON.NET在序列化对象时使用Newtonsoft.Json.PreserveReferencesHandling.Objects。换句话说,尽管使用了以下设置,但$id/$ref始终在序列化对象中使用:publicclassMvcApplication:System.Web.HttpApplication{protectedvoidApplication_Start(){WebApiConfig.Register(GlobalConfiguration.Configuration);}}publicstaticclassWebApiConfig{pub

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;}}

c# - XML序列化、编码

usingSystem;publicclassclsPerson{publicstringFirstName;publicstringMI;publicstringLastName;}classclass1{staticvoidMain(string[]args){clsPersonp=newclsPerson();p.FirstName="Jeff";p.MI="A";p.LastName="Price";System.Xml.Serialization.XmlSerializerx=newSystem.Xml.Serialization.XmlSerializer(p.GetTyp

c# - Newtonsoft.Json 导致序列化发生两次导致 Reference.cs 中的重复定义

我有一个具有服务引用的项目Common。添加对Newtonsoft.json(Version6.0.2的引用后到具有服务引用和可序列化类ChatLine的同一项目(Common)[Serializable]publicclassChatLine{[JsonProperty("L")]publicstringLineId{get;set;}[JsonProperty("CT")]publicDateTimeConversationTimeInUtc{get;set;}[JsonProperty("S")]publicstringSenderId{get;set;}[JsonPropert

c# - 如何将参数传递给反序列化json的构造函数

我在使用Newtonsoft.Json反序列化对象时将一些父实例传递给构造函数时遇到了一个小问题。假设我有以下类(class)publicclassA{publicstringStr1{get;set;}publicIListBs{get;set;}}publicclassB{publicB(Aa){//ashouldnotbenull!Console.WriteLine(a.Str)}}现在我像这样对对象a进行序列化和反序列化:Aa=newA()a.Bs=newList()a.Bs.Add(newB(a));a.Bs.Add(newB(a));a.Bs.Add(newB(a));va

c# - 我可以在不实现 IXmlSerializable 的情况下为 XmlSerializer 提供自定义序列化吗?

我们正在使用XmlSerializer,我想为某些类提供自定义序列化。但是,我并不总是能够修改相关类的源代码,否则我只能让它实现IXmlSerializable。有什么办法吗? 最佳答案 这是代理反序列化助手的一个简单示例:给定一个我们无法在类级别直接控制序列化的类型:publicsealedclassClass//contrivedexample{publicstringProperty{get;set;}}我们需要反序列化的xml:Value您可以创建一个代理类型来手动处理目标类型的反序列化过程,如下所示:[XmlRoot("C

c# - 序列化和 Yield 语句

是否可以序列化包含yield语句的方法(或包含此类方法的类),以便在重新水化该类时,保留生成的迭代器的内部状态? 最佳答案 是的,你可以做到这一点。注意事项。可以在此处找到使用yield序列化方法、反序列化和继续的示例:http://www.agilekiwi.com/dotnet/CountingDemo.cs(WebArchiveLink)。一般来说,尝试序列化而不做一些额外的工作会失败。这是因为编译器生成的类没有用Serializable属性标记。但是,您可以解决这个问题。我会注意到它们没有标记为可序列化的原因是因为它们是一个

c# - C# 中内存占用最少的最快的序列化器和反序列化器?

我目前正在使用二进制格式化程序(Remoting)序列化和反序列化对象以便在我的LAN中发送。我最近从2.0升级到.NET3.5。3.5是否引入了任何新类型来提高序列化性能?我查看了DataContractSerializer,但它会将任何内容序列化为底层XML权利……这肯定会增加内存占用量。通过LAN发送对象最快的序列化程序是什么?我不关心互操作或版本控制......我需要速度!我对第三方开源替代方案持开放态度。 最佳答案 听起来像ProtocolBuffers可能正是您要找的。我知道三种.NET实现:protobuf-net,p

c# - 如何在 C# 序列化期间为数组赋予属性?

我正在尝试生成C#来创建这样的XML片段。11:22:33:44:55:66:77:8811:22:33:44:55:66:77:8911:22:33:44:55:66:77:8A我正在考虑使用这样的东西:[XmlArray("device_list"),XmlArrayItem("item")]publicListItem[]device_list{get;set;}作为属性,使用此类声明:publicclassListItem{[XmlAttribute]publicstringtype{get;set;}[XmlText]publicstringValue{get;set;}}这