Tag: datacontractserializer

使用DataContractSerializer进行自定义序列化

我目前正在为我的DataSet使用包装类,以实现自定义序列化。 我想使用DataContractSerializer (更像是必须使用它)但仍然支持自定义序列化。 问题是[DataContract]和[Serializable]属性看起来并不那么好…我怎么能覆盖序列化,并支持BOTH DataContract和ISerializable序列化? 包装器DataSet类的代码带到这里: [Serializable()] [System.Runtime.InteropServices.ComVisible(false)] public class TestDatasetWrapper : TestDataSet, ISerializable { public TestDatasetWrapper() : base() {} protected TestDatasetWrapper(SerializationInfo info, StreamingContext context) { SerializationHelper.DeserializeTypedDataSet(info, this); } public override void GetObjectData(SerializationInfo info, StreamingContext context) { SerializationHelper.AddTypedDataSetObjectData(info, this); } } 谢谢!

序列化/反序列化对象 – 字段的顺序很重要?

如果字段不在“正确”(无论是什么意思)顺序中, DataContractSerializer是否可能错误地反序列化对象? 我尝试序列化/反序列化的类没有在字段/属性上放置顺序属性。 然而,我的一个字段总是被反序列化为null即使它具有非空值(它实际上包含字符串列表)。 当我在序列化文件中移动两个XML元素以匹配另一个XML示例中的顺序时(反序列化工作没有问题)一切都开始工作。 这对我没有意义,但也许有人知道的更好。 ;)

使用DataContractSerializer反序列化XML

我有一个返回以下数据的Web服务: 12345 25 ELM ST ELM ST 我有一个匹配的类结构: [DataContract(Name=”RESPONSE”, Namespace=””)] public class Response { [DataMember(Name=”KEY”)] public string Key { get; set; } [DataMember(Name = “PROPERTY”)] public Property Property { get; set; } } [DataContract(Name=”PROPERTY”, Namespace=””)] public class Property { [DataMember(Name=”PROPERTY_ADDRESS”)] public PropertyAddress Address { get; set; } } [DataContract(Name=”PROPERTY_ADDRESS”, Namespace=””)] public class PropertyAddress { [DataMember(Name=”STREET_NUM”)] […]

ShouldSerialize模式和DataContractSerializer

有没有办法让ShouldSerialize*模式与DataContractSerializer一起使用? 这是一个小例子: 我有一个简单的类Person ,看起来像这样: [DataContract] public class Person { [DataMember] public string FirstName { get; set; } public bool ShouldSerializeFirstName() { return !string.IsNullOrEmpty(FirstName); } [DataMember] public string LastName { get; set; } public bool ShouldSerializeLastName() { return !string.IsNullOrEmpty(LastName); } public Person(string firstName, string lastName) { FirstName = firstName; LastName = lastName; } public Person(string firstName) […]

如何使用DataContractSerializer反序列化XML

我正在尝试反序列化xml文档: TEST1 TESTGAME1 1111111 5,00 TEST2 TESTGAME2 222222 0,30 0,90 .cs类: namespace XmlParse { using System.Collections.Generic; using System.Runtime.Serialization; [DataContract(Namespace = “http://serialize”)] public class game { #region Public Properties [DataMember] public string name { get; set; } [DataMember] public string code { get; set; } [DataMember] public long ugn { get; set; } [DataMember] public List […]

克隆没有序列化的对象

我在SO处找到了许多解决方案,而且是通过序列化/反序列化(进入内存和返回)处理对象的深层克隆。 它要求克隆的类用[Serializable]标记。 我碰巧把我的类(大部分都是)用[DataContract]标记,因为我使用DataContractSerializer来序列化为XML。 我只引入了[Serializable]属性,因为需要深度克隆其中一些类实例。 但是,现在通过DCS序列化/反序列化发生了一些事情,因为它不再起作用了 – 关于在反序列化时期望不同的XML元素的错误。 如果我删除[Serializable] ,错误就消失了。 我有什么选择? 我只想尽可能简单地深入克隆我的对象。

有没有办法使DataContractSerializer输出更干净的XML?

使用DataContractSerializer序列化我的对象,我得到类似的输出 some@email.com Random Person Some number 有没有办法输出正好的标签 等,不需要用属性覆盖我的类? 如果没有办法,每次正确的输出保证是相同的? 因此,如果我使用它来渲染我的对象图是XML与文件生成的X *文档混搭,我将永远不会遇到我的节点更改名称并且文档空白正确的问题?

数据协定序列化程序 – 如何省略集合的外部元素

如何使用Data Contract Serializer序列化没有外部元素的列表 ? 我正在使用.Net 3.5。 我有一个包含列表的类,除其他外,我希望序列化,而外部元素不符合相关的XSD: [DataContract(Name=”MyClass”)] public class MyClass { … [DataMember(Name=”Parameters”)] public List Parameters; … } [DataContract(Name=”Parameter”)] public struct Parameter { [DataMember(Name=”ValueName”)]string ValueName; [DataMember(Name=”Value”)]int Value; public Parameter(string ValueName, int Value) { this.ValueName = ValueName; this.Value = Value; } } 以上序列化为(假设列表中只有一个参数): 我想将它序列化如下: 使用XmlSerializer我可以通过将[XmlElement]应用于列表来完成此操作: [XmlElement (“Parameter”)] public List Parameters; 但是我不想使用XmlSerializer因为我的类有一些非序列化友好的属性,我希望处理那些使用[OnSerializing]属性系列的属性。 谢谢。

为什么XmlSerializer不需要标记类型?

在C#中,如果我想使用XmlSerializer序列化实例,则不必使用[Serializable]属性标记对象的类型。 但是,对于其他序列化方法,例如DataContractSerializer ,需要将类标记为[Serializable]或[DataContract] 。 是否有关于序列化要求的标准或模式?