WCF 客户端的默认属性值

Posted

技术标签:

【中文标题】WCF 客户端的默认属性值【英文标题】:Default property values for WCF client 【发布时间】:2012-11-04 16:56:52 【问题描述】:

我有以下场景:

独立类库中存在一个复杂对象,并且某些对象属性具有默认值。

对象是 WCF 公共方法的参数。

我在 WCF 的客户端上实例化这个对象,给属性赋值并传递给 WCF 的公共方法。

服务端的 WCF 方法接受它并执行任何操作。

我的问题是,当我在客户端属性上实例化对象时,我无法使用默认值,我必须再次在代码中分配它们。

我在这里查看了有关该主题的过去问题,但没有找到与我的场景相关的任何内容。尽管在客户端我的对象不是从类库本身而是从服务引用实例化的,但我实际上并没有参数的数据协定,例如 WCFServiceReference.MyClass (否则 WCF 方法不能接受它作为参数)。

我真的很想在客户端上使用所有这些默认值。

我将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

使用您的方法- 使用服务代理类- 客户端仅获取标有DataMember 的属性。这就是为什么您分配的默认值不会出现在客户端中的原因——该代码未序列化,因此不会随 WCF 服务一起发送。

如果您想共享代码,可以通过在单独的类库中声明您的 DataContract 类来实现。让 WCF 服务和客户端都引用该库。

【讨论】:

您好 dbaseman,谢谢您的回答。我已经在一个单独的图书馆里上课了。用 DataMember 装饰班级成员对我没有帮助,但我想我现在明白为什么了。在阅读您的帖子时,我对如何解决该问题有所了解 - 我刚刚创建了一个 WCF 服务的公共方法,该方法返回我需要的对象,并在该方法中预设了默认值。我赞成您的回答,因为它促使我​​获得了这种见解。 @Anvar 没有问题,希望对您有所帮助!

以上是关于WCF 客户端的默认属性值的主要内容,如果未能解决你的问题,请参考以下文章

影响客户端的 WCF 合同更改

wcf客户端怎么获取自身使用的端口号?

我应该将 DTO 映射到客户端和服务器端的域实体/从域实体映射吗?

WCF 双工客户端的最佳实践

如果我可以同样使用 Webservices 2.0 客户端,那么 WCF 客户端的优势是啥?

响应式 WCF 客户端的双工回调或客户端线程