jjzjj

DataContractSerializer

全部标签

c# - 如何确定类是否具有 DataContract 属性?

我正在编写一个需要确定类是否具有DataContract属性的序列化函数。如果类具有DataContract属性,基本上函数将使用DataContractSerializer,否则它将使用XmlSerializer。感谢您的帮助! 最佳答案 测试DataContractAttribute的最简单方法可能是:boolf=Attribute.IsDefined(typeof(T),typeof(DataContractAttribute));也就是说,现在DC支持POCO序列化,还不完整。更完整的DC可串行化测试是:boolf=true

c# - 使用 DataContractSerializer 反序列化 XML

我有一个返回以下数据的网络服务:1234525ELMSTELMST我有一个匹配的类结构:[DataContract(Name="RESPONSE",Namespace="")]publicclassResponse{[DataMember(Name="KEY")]publicstringKey{get;set;}[DataMember(Name="PROPERTY")]publicPropertyProperty{get;set;}}[DataContract(Name="PROPERTY",Namespace="")]publicclassProperty{[DataMember(N

c# - 为什么 XmlSerializer 不需要将类型标记为 [Serializable]?

在C#中,如果我想用XmlSerializer序列化一个实例,对象的类型不必用[Serializable]属性标记。但是,对于其他序列化方法,例如DataContractSerializer,需要将类标记为[Serializable]或[DataContract]。序列化要求是否有标准或模式? 最佳答案 这是因为XmlSerializer只序列化公共(public)字段/属性。其他形式的序列化可以序列化私有(private)数据,这构成了潜在的安全风险,因此您必须使用属性“选择加入”。

c# - 如何使用 DataContractSerializer 反序列化 XML

我正在尝试反序列化一个xml文档:TEST1TESTGAME111111115,00TEST2TESTGAME22222220,300,90.cs类:namespaceXmlParse{usingSystem.Collections.Generic;usingSystem.Runtime.Serialization;[DataContract(Namespace="http://serialize")]publicclassgame{#regionPublicProperties[DataMember]publicstringname{get;set;}[DataMember]publ

异常在.NET CORE中进行XML WTIH datacontractserializer plesialization

我有以下用.NET核心写的片段:usingSystem;usingSystem.Runtime.Serialization;usingSystem.Text;usingSystem.Xml;namespaceBugTest{classProgram{staticvoidMain(string[]args){Console.WriteLine("HelloWorld!");varxml=@"88c02aba-f78c-4749-8665-0caddee08b8a88c02aba-f78c-4749-8665-0caddee08b8a0001-01-01T00:00:00";constintbuf

c# - 在 DataContract 中设置默认值?

如何为DataMember设置默认值例如下图所示:我想默认设置ScanDevice="XeroxScan"[DataMember]publicstringScanDevice{get;set;} 最佳答案 我通常使用这样的模式来完成此操作:[DataContract]publicclassMyClass{[DataMember]publicstringScanDevice{get;set;}publicMyClass(){SetDefaults();}[OnDeserializing]privatevoidOnDeserializi

c# - 在 DataContract 中设置默认值?

如何为DataMember设置默认值例如下图所示:我想默认设置ScanDevice="XeroxScan"[DataMember]publicstringScanDevice{get;set;} 最佳答案 我通常使用这样的模式来完成此操作:[DataContract]publicclassMyClass{[DataMember]publicstringScanDevice{get;set;}publicMyClass(){SetDefaults();}[OnDeserializing]privatevoidOnDeserializi

c# - DataContractSerializer - 更改命名空间并反序列化绑定(bind)到旧命名空间的文件

我有一个使用DataContractSerializer序列化的数据类。该类使用没有显式Namespace声明的[DataContract]属性。因此,生成的xml文件中的命名空间是基于类的命名空间生成的。这个类基本上是这样的:namespaceXYZ{[DataContract]publicclassData{[DataMember(Order=1)]publicstringProp1{get;set;}[DataMember(Order=2)]publicintProp2{get;set;}}}...以及生成的xml:StringValue11现在我想通过将[DataContrac

c# - DataContractSerializer - 更改命名空间并反序列化绑定(bind)到旧命名空间的文件

我有一个使用DataContractSerializer序列化的数据类。该类使用没有显式Namespace声明的[DataContract]属性。因此,生成的xml文件中的命名空间是基于类的命名空间生成的。这个类基本上是这样的:namespaceXYZ{[DataContract]publicclassData{[DataMember(Order=1)]publicstringProp1{get;set;}[DataMember(Order=2)]publicintProp2{get;set;}}}...以及生成的xml:StringValue11现在我想通过将[DataContrac

c# - DataContractSerializer - 如何将 xml 输出到字符串(而不是文件)

我有一个关于datacontractserializer的快速问题。也许这更像是一个流问题。我找到了一段将xml写入文件流的代码。我基本上不需要文件,只需要字符串输出。publicstaticstringDataContractSerializeObject(TobjectToSerialize){varfs=newFileStream("test.xml",FileMode.OpenOrCreate);varserializer=newDataContractSerializer(typeof(T));serializer.WriteObject(fs,objectToSeriali