.NET Framework类,使用提供的数据协定将类型的实例序列化和反序列化为XML流或文档。
如何从 DataContract 类中的 KnownType 中删除类型属性?
是否可以使用 KnownType 的类名而不是父类作为标签?例如 这是较大的 DataContract xml 文件的摘录, [DataContract (命名空间 = "projectNames...
我必须实施一些协议。我需要序列化的所有 xml(WCF 合约)始终具有两个指定部分和一个“内容”部分 - 例如: 第一的: 我必须实施一些协议。我需要序列化的所有 xml(WCF 合约)始终具有两个指定部分和一个“内容”部分 - 例如: 第一: <X> <Y> <Content1/> </Y> </X> 第二: <X> <Y> <Content2/> </Y> </X> 我想使用一些泛型,但随后出现了节点名称的问题。 我找到了这个答案:序列化 DataMember(名称)覆盖问题,但它不适合我。 我的方法的代码: public class X<TContent> { [DataMember] public Y<TContent> yName { get; set; } } public class Y<TContent> { [DataMember] public virtual TContent Content { get; set; } } 然后有一些“内容”类,例如: public sealed class Content1Class: Y<Content1> { [DataMember(Name = nameof(Content1))] public override Content1 Content { get; set; } } 不幸的是,我的内容始终为空。 我的问题是: 我可以设置类之间的属性和关系来反序列化上述情况吗?也许我必须为每种内容类型创建单独的类? 您几乎明白了,并且 nameof 的想法将会奏效。其他一切都通过泛型类型约束和具有泛型属性的泛型类来解决。 考虑这个代码示例: using System.Runtime.Serialization; using FileStream = System.IO.FileStream; using FileMode = System.IO.FileMode; static class DefinitionSet { internal const string dataContractNamespace = "https/www.my.site.org/contracts/demo"; internal const string filename = "demo.xml"; } //DefinitionSet [DataContract(Namespace = DefinitionSet.dataContractNamespace)] public class X<ContentType> where ContentType : Content { [DataMember(Name = nameof(Y))] Y<ContentType> y = new(); internal Y<ContentType> Y => y; } [DataContract(Namespace = DefinitionSet.dataContractNamespace)] public class Y<ContentType> where ContentType : Content { [DataMember(Name = nameof(ContentType))] internal ContentType Content { get; set; } } //Y [DataContract(Namespace = DefinitionSet.dataContractNamespace)] [KnownType(typeof(Content1))] [KnownType(typeof(Content2))] public abstract class Content { } //Content [DataContract(Namespace = DefinitionSet.dataContractNamespace)] public class Content1 : Content { public Content1() { Index = 13; Message = nameof(Message); } [DataMember] internal int Index { get; private init; } [DataMember] internal string Message { get; private init; } } [DataContract(Namespace = DefinitionSet.dataContractNamespace)] public class Content2 : Content { public Content2() { Comment = nameof(Comment); Topic = nameof(Topic); } [DataMember] internal string Comment { get; private init; } [DataMember] internal string Topic { get; private init; } } static class DataContractDemo { static void TestSerialization<ContentType>() where ContentType : Content, new() { X<ContentType> objectGraph = new(); objectGraph.Y.Content = new ContentType(); DataContractSerializer dcs = new(typeof(X<ContentType>)); using var writeStream = new FileStream( $"{typeof(ContentType).Name}.{DefinitionSet.filename}", FileMode.Create); dcs.WriteObject(writeStream, objectGraph); } //TestSerialization static void Main() { TestSerialization<Content1>(); TestSerialization<Content2>(); } //Main } //class DataContractDemo 我希望这个代码示例是自我记录的。如果有不清楚的地方,请进一步提问。
DataContractSerializer 处理反序列化期间丢失的枚举值
有什么方法可以在字符串枚举值反序列化期间处理丢失的枚举值。 我原本以为默认使用 Json.Net 和 StringEnumConverter
只写流 - 使用 DataContractSerializer 获取写入的字节数
考虑我有以下片段: 公共无效存储(流s,对象t) { var 序列化器 = new DataContractSerializer(target.GetType(), 新
从内存映射文件反序列化 XML 时,如何修复“SerializationException:根级别的数据无效。第 1 行,位置 1”
从内存映射文件反序列化 XML 时,我在调用 DataContractSerializer.ReadObject() 时遇到以下错误: System.Runtime.Serialization.SerializationException:'出现错误
System.Runtime.Serialization.SerializationException:根级别的数据无效。 1 号线,位置 1
请不要将此标记为重复,我已尝试过类似问题中的建议,但无法解决该错误。 我在尝试反序列化和 ReadObject 时遇到以下错误: 系统.R...
具有不同 XML 字段的 DataContract Name 属性
我正在调用通用端点 /api/foo ,它返回描述 foo 的 XML。您可以将任何实体名称作为 foo 传递,它将返回其数据。 以下是一些回复示例。 打电话时...
schemas.microsoft.com/2003/10/Serialization .net 在 php 中提取 base64 编码的二进制数据
我在 c# .net 应用程序中使用了一些数据序列化 C# .net 反序列化 xml 二进制文件 公共静态对象 DeSerializeXmlBinary(byte[] bytes) { 使用 (XmlDictionaryReader rdr =
使用DataContractSerializer进行序列化,但无法反序列化回来
我有以下2个功能: 公共静态字符串序列化(对象obj) { DataContractSerializer 序列化器 = new DataContractSerializer(obj.GetType()); 内存流 内存流 = 新
`DataContractSerializer` 将子类反序列化为基类
我的服务器上有以下内容: [数据合同] 公共基类 { } 【运营合同】 void DoSth(基础基础) { } 在我的客户上: 子类:基类 { } 当使用 DoSth(chil...
“类型不是预期的”,使用 DataContractSerializer - 但这只是一个简单的类,没有有趣的东西?
我正在重构我的 XML 序列化,并想尝试一下 DataContractSerializer。 一切都运行顺利,直到需要序列化此类: 使用系统; 使用 System.Runtime.Serializa...
DataContractSerializer - 将字符串序列化为值而不是引用
我使用 DataContract 序列化程序来序列化我的数据。我使用 PreserveObjectReferences = true 因为我需要它。 例如我有两个对象: [数据合同] A级 { [DataMember] 字符串_名称; ...
我需要的类被序列化为 Web 服务响应主体。 问题是,基类的属性随之被序列化,而我无法为该服务提供该属性。 我...
DataContractSerializer 读取会导致“缺少带有编码的 XML 声明”,知道为什么吗?
我使用 DataContractSerializer 将记录写入 XML 文件。工作没有问题。但是当我回读时,我遇到了一个异常:加载快照失败,带有编码的 XML 声明是
DataContract 反序列化 XML - 同一元素中的元素和属性列表
我在c# ASP.NET环境中工作。我正在尝试将以下 XML 元素反序列化为 C# 对象/类。该元素的深度为 3 层。 ...
解决WCF DataContract DataMember Order反序列化问题
与遗留 WCF 接口的一个用例是将所有 .NET 服务代码隐藏在更现代的 RESTful API 后面,我们将(看似正确的)XML 发布到该 API,并将其反序列化为 WCF 类...
我正在尝试使用 DataContractSerializer 将委托序列化为 xml 文件。 它因错误而失败 System.Runtime.Serialization.SerializationException:类型'System.
[DataContract SerializationException使用谓词列表时
我正在编写一个通用过滤器类,该类将主要用于过滤人群中的人员。我正在尝试序列化过滤器类,但是在运行时我得到了SerializationException:System ....
DataContract,默认DataMember值将在应用程序之间api工作
[我有一个这样的类:[DataContract,可序列化]公共类MyInfo {string firstName;字符串fullName; }有一个像这样的api公开了GetMyInfo(...
我想在DataContract类中使用自定义的aplified类型(认为是Nullable)。我试图编写一个IDataContractSurrogate,但在反序列化时失败。我的放大类型如下:public ...