问题标签 [datacontractserializer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1125 浏览

.net - 将属性序列化切换到 NetDataContractSerializer 的自定义属性

在 .NET 3.5 中,我想创建一个自定义属性(例如 [NetDataMember]),它将序列化行为DataContractSerializerNetDataContractSerializer.

基本上,对于A如下图所示的类

我想获得一个DataContractSerializer默认行为的序列化程序,但NetDataContractSerializer对于标有[NetDataMember].

知道如何设计一个可以实现这种行为的序列化程序吗?

0 投票
1 回答
202 浏览

.net - 应用 IOperationBehavior 覆盖以进行普通序列化?(不是服务)

我想创建一个[CustomDataMember]属性,DataContractSerializer通过IOperationBehavior. 我遵循了Aaron Skonnard 给出的说明,但是当我调用 DCS 序列化程序时,自定义行为既不会被实例化,也不会被调用。

显然,我遗漏了一些东西,可能是在构造函数调用的级别DataContractSerializer。有谁知道可以做些什么来使行为正确地注入 DCS 中?

0 投票
1 回答
219 浏览

datacontractserializer - 如何从 DataContractSerializer 的模式生成类

是否有一个等效的工具可以xsd.exe从模式生成类,但用于 withDataContractSerializer而不是 with XmlSerializer

0 投票
3 回答
1879 浏览

c# - C# - 使用哪些属性来支持同时使用 XMLSerializer 和 DataContractSerializer 进行序列化?

我有一些简单的 POCO 对象:

由于有时字段顺序很重要(例如,如果发送到 Infopath 表单),我需要在序列化时保持元素顺序。

现在我很困惑,我应该为类和每个字段使用什么属性。我知道:

  • DataContractSerializer 使用 [DataContract] 和 [DataMember(Order = n)]
  • XMLSerializer 使用 [Serializable] 和 [XmlElementAttribute(Order = n)]。

那么如果我想同时支持 XMLSerializer 和 DataContractSerializer 使用什么属性,那么它可以在 WCF 或 ASP 中使用。网页服务?

0 投票
4 回答
7381 浏览

c# - Is there a way to make DataContractSerializer output cleaner XML?

Using the DataContractSerializer to serialize my object I get an output similar to

Is there any way for it to output tags that are just

etc, without the need to cover my classes with attributes?

If there's not a way the output of this is guaranteed to be the same every time correct? So that if I use this to render my object graphs are XML to mash up with an X* document for file generation that I'll never run into an issue where my nodes change names and the document comes out blank correct?

0 投票
2 回答
6114 浏览

c# - XML 序列化 - 何时使用 DataContractSerializer / Binary / XMLSerializer

我已经看了一段时间了

似乎不鼓励二进制序列化,因为对字段名称的任何更改都会破坏序列化 =?不好

XMLSerializer 是有问题的,因为您必须提供无 arg 构造函数和公共字段,尽管您确实可以更好地控制作为属性或元素的元素及其命名

DataContractSerializer 很好,但所有子类都需要显式添加,这很可惜

但是我偶然发现了没有这个限制的 NetDataContractSerializer。

如果您的目标是 C# 序列化并且对 xml 的大小没有大的限制,那么 NetDataContractSerializer 总是要走的路吗?

0 投票
1 回答
1356 浏览

silverlight - .NET / Silverlight:DataContractSerializer 字节数组和套接字:意外的 EOF 反序列化

我目前正在使用套接字尝试在 Silverlight 3 客户端和 .NET3.5 服务之间发送消息。我可以很好地设置 TCP 连接,并发送数据,但我的问题在于序列化和反序列化 DataContracts。

目前我们正在使用 WCF PollingDuplex 绑定来完成这项工作,但我们对其性能并不满意,因此正在尝试使用套接字,同时仍在尝试使用 DataContract 属性。我的代码如下:

引发 XmlException: Unexpected End of File 的是 ReadObject 行。我尝试了各种方法,包括在收到字节数组 (_recieveBuffer) 时截断尾随的 0,最后只留下一个 0 等,但似乎没有任何效果。我检查了客户端和服务器端的 byte[] 缓冲区,它们在开始和结束时具有相同的值并且长度相同。我也尝试使用 actionMessage.GetType() 和 typeof(ActionMessage) 作为 DataContractSerializer 的参数,但没有区别......

我在这里错过了什么:为什么 dataContractSerializer.Write() 不接受 dataContractSerializer.Read() 生成的输出?

在遇到这个问题之前,我度过了愉快的一天......我确实找到了另一个有同样问题的人,但是提供的解决方案在服务端设置 memoryStream.Position = 0 不起作用......

提前致谢。

0 投票
1 回答
753 浏览

.net - DataContractSerializer 泄漏内存直到进程终止

我有一个使用 EF4 的 .net4 应用程序,我使用 BasicHttpBinding 通过 WCF 公开我的模型(但这可以更改),每次我尝试调用此方法时,我的 Web 服务器进程开始在内存中增长并且进程死亡。

问题是当 DataContractSeralizer 试图序列化我的实体(有一些关系)进入递归堆栈时。那么,为了通过 WCF 服务该实体,是否有任何特殊配置或我缺少的东西。

这里有一些额外的信息:我的 EF 模型的截图:http ://www.luisguerrero.net/stackoverflow/efmodel.jpg

0 投票
3 回答
3211 浏览

xml - XSLT:使用父节点的命名空间

我想避免在我的 XSLT 输出中产生重复的命名空间。

(我正在使用 XSLT 处理一些 XML,以便 Microsoft 的 DataContractSerializer 认为适合实际处理它。DCS 似乎不喜欢的一件事是多次定义相同的命名空间。)

我从 XXX 元素下获取所有“Characteristics”元素,并将它们组合在一个新的数组元素中,如下所示:

“功能”名称空间定义在 XSLT 文件的顶部。然而,在源 XML 中不会找到值“feature”,它将是一些任意前缀(通常是“h”)。问题是,如果我使用这个 XSLT,那么命名空间被分配给输出 XML 中的 2 个前缀:来自输入 XML 的原始命名空间(通常是“h”)和由 XSLT 生成的“特征”。(虽然 XML 有效,但这让可怜的 Microsoft 感到困惑。)

所以我想通过引用当前元素的命名空间来完全避免在输出 XML 中定义“功能”命名空间。我对此尝试了变体,但我不知道如何正确设置 xsl:element 的命名空间值以获取当前上下文节点的命名空间前缀......

样本输入:

重复命名空间(坏):

期望的输出:

这个 XSLT 几乎可以工作,但它涉及硬编码“h”值,我想支持任意值:

0 投票
3 回答
11766 浏览

c# - wcf 将枚举反序列化为字符串

我正在尝试使用 WCF 使用 RESTful Web 服务。我无法控制 Web 服务的格式,所以我必须在这里和那里做一些变通方法。然而,我似乎无法解决的一个主要问题是如何使 WCF 将枚举反序列化为字符串。

这是我的代码(显然名称已更改):

这是反序列化失败的返回数据:

最后抛出异常:

反序列化 Service.Foo 类型的对象时出错。值“bar”无法解析为类型“Int64”。

我不想切换到使用 XmlSerializer,因为在它的许多其他缺点中,它不会让我在属性上拥有私有设置器。

如何使 WCF(或者,DataContractSerializer)将我的枚举视为字符串值?

编辑:这样做似乎是不可能的,并且行为是设计的方式。感谢微软,没有给我们选择,不得不求助于黑客。按照 somori 建议的方式进行操作似乎是使用 JSON 和 WCF 获取字符串枚举的唯一方法。