问题标签 [datacontract]

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 投票
3 回答
1048 浏览

wcf - Silverlight WCF 服务使用数据合同中的继承类型

我试图在 silverlight 中使用 WCF 服务...

我所做的是为我的数据合同创建两个单独的程序集......

  1. 包含我所有标记有数据合同的类型的程序集是针对 .Net 3.5 构建的

  2. 链接到第一个程序集中的文件的 Silverlight 程序集。

这意味着我的 .Net 应用程序可以引用程序集 1 和我的 silverlight 应用程序程序集 2。这工作正常,我可以跨服务进行通信。

当我尝试转移继承的类时会出现问题。我有以下班级结构......

IFlight - 适用于所有类型航班的界面。

BaseFlight : IFlight - baseflight 飞行实现 IFlight

AdhocFlight : BaseFlight, IFlight - 一个从 baseflight 继承的 adhoc 飞行,也实现了 IFlight。

我可以成功地在整个服务中转移基础航班。但是我真的需要能够通过界面传输 IFlight 的对象,因为我想要一个可以传输多种类型的航班的操作合同......

...我认为应该工作吗?

但是我得到了错误:

“服务器没有提供有意义的回复;这可能是由于合同不匹配、会话过早关闭或内部服务器错误造成的。”

任何想法,将不胜感激。

0 投票
1 回答
1743 浏览

c# - 具有多个服务和命名空间问题的 WCF

我创建了许多 WCF 服务,出于参数考虑,它们被称为Service1Service2

这两个服务都返回(在某些时候,可能通过对象内部的关系)一个客户对象。

为了测试起见,我向 Service1 和 Service2添加了GetCustomer()方法,并且在基本的 WinForms 应用程序中添加了对这两个服务的服务引用。

Service1Client proxy1 = new Service1Client();

客户 customer1 = proxy1.GetCustomer(); //

^^^^^^ 不明确的引用,需要我命名为 WcfTestClient.Service1.Customer

Service2Client proxy2 = new Service2Client();

客户 customer2 = proxy2.GetCustomer();

^^^^^ 不明确的引用,需要我命名为 WcfTestClient.Service2.Customer

问题是,Service1Service2返回的 Customer 对象都是同一类型的 Customer (WcfTestService.Customer)。为了解决这个问题,我需要包含完整的程序集名称而不仅仅是客户。

我在 Stack Overflow 上阅读了几篇文章,指出可以将数据契约编译成单独的程序集,但我并不特别喜欢这个想法,因为它可能仍然会导致客户端使用其他语言(例如 Java)时出现问题。

我看到的另一个解决方案是 SvcUtil.exe 方法,但据我所知,这个解决方案并没有解决我的命名空间问题,因为我需要为每个服务单独运行 Util?

如果有人有任何有用的建议,请与我们联系!

0 投票
2 回答
3173 浏览

wcf - DataContract 序列化 - 基类属性名称不起作用

我有一个如下基类:

然后我有很多派生类,这里是一个例子:

一旦序列化,这里是输出:

为什么 ID 属性没有使用我在基类的 DataMember 属性中提供的名称进行序列化?

0 投票
4 回答
36153 浏览

.net - 从 XSD 生成 DataContract

我希望能够DataContract从 XSD 文件生成一个,最好使用xsd.exe 工具。它在我的每个项目上自动生成[DataContract]and的最简单方法是什么?[DataMember]

还是有更好的方法?我试图避免每次更改和重新生成 XSD 文件时都必须重新创建数据合同。

0 投票
1 回答
428 浏览

serialization - XML 序列化 - 是否可以以这种方式序列化模型?

我有以下模型:

所以基本上我希望能够做到以下几点:

序列化后,它应该类似于:

我玩过 DataContracts 和 XmlSerializer,但我似乎无法找到一种方法来做到这一点。

0 投票
3 回答
2435 浏览

wcf - 从代码动态创建 WCF DataContract

鉴于我有一个完全动态的对象模型,也就是说,我没有在代码中的任何地方定义具体类,但我仍然希望能够为它们创建 WCF DataContracts,以便我可以在操作中使用它们。我怎样才能做到这一点?

我的具体类“实体”实现了 ICustomTypeDescriptor,它用于向外界呈现各种属性,但我对 WCF 的实验表明 WCF 并不关心 ICustomTypeDescriptor。这是正确的还是我错过了什么?

这可能吗?不可能,创建 DataContract 的唯一方法是实际拥有一个具体的硬编码类,可以吗?

0 投票
3 回答
878 浏览

wcf - 两个 WCF 服务将相同的数据合同返回给 silverlight 客户端

我有两个逻辑上不同的 WCF 服务,我希望将它们分开。它们每个都有一个返回相同数据合同的操作。单个 silverlight 客户端同时使用这两种服务。当我在 silverlight 客户端中为每个服务添加服务引用时,单个数据合同在生成的代码中结束了两次。是否可以让两个服务引用使用相同的数据合同定义?

根据我的阅读,对于非 silverlight 客户端,可以通过将数据合同编译成一个单独的程序集,服务器和客户端都引用该程序集。然而,这对于 silverlight 是不可能的(至少在 silverlight 3 中)。

谢谢,
罗伯

0 投票
6 回答
8214 浏览

wcf - 通过 WCF 传递匿名类型的实例

我有一个 WCF 服务方法,它需要一个对象,然后使用反射检索其属性。

在客户端,我创建了一个匿名类型对象

并将其传递给方法。我遇到了一个例外:

我不能用序列化属性标记类型或其成员,因为实际上没有明确声明的类型或属性。有没有办法克服这个问题?

0 投票
6 回答
22268 浏览

wcf - 引用相同数据协定的多个 WCF 服务

我正在构建一组共享通用数据合同(或实体,如果您愿意)的 WCF 服务。这些是用 DataContract 和 DataMember 属性修饰的简单数据传输对象。我明确指定了名称和命名空间。在尝试遵循 IDesign 建议的每个服务合同平均 12 名成员的原则时,我将我的服务项目分解为多个服务。

我的数据合同在一个单独的程序集中,如果他们使用 .Net,我可以将其提供给我们的客户。他们可以告诉他们的服务引用在引用的程序集中重用类型。但是,如果他们不使用 .net 并且他们使用 2 个服务,这两个服务都使用相同的实体,那么我假设他们会得到一个模棱两可的参考消息。如果我不引用数据合同 dll,我可以在 Visual Studio 中看到这一点。

我的问题是,我可以在我的服务中做些什么,或者他们可以在客户端应用程序中做些什么来绕过必须限定数据合同来自哪个代理?

0 投票
1 回答
480 浏览

serialization - 数据合同序列化是否使用反射?

XmlSerialization 为每个类创建一个序列化程序代理。代理驻留在不同的程序集中,因此它只能序列化公共字段。

DataContract 序列化也可以序列化私有字段。这是否意味着它使用反射?是不是比使用代理慢(第一次除外)?