2011-07-01 67 views
3

我有一个客户端应用程序消耗被接受并返回一些复杂类型参数的WCF服务。这些复杂类型是在一个单独的程序举行,无论是客户端应用程序和WCF服务的引用.. 的问题是,当我加入的客户端应用程序的服务引用,所产生的参考类建立自己的复杂参数的版本类型,因此我不能传入原始类型定义的程序集中的类型。 不知道这是否可以理解..服务引用复杂类型

问题是..我要写一些反射式深层复制例程,以有效地建立从原始类型的服务引用生成的类? 或者是有一个更好的选择

任何帮助,因为曾经非常高兴地收到

NAT

+0

您正在传递数据合同的复杂类型?我相当肯定WCF可以处理来自共享程序集的重用类型,我自己也是这样做的。 – DoctorMick

回答

7

当你添加一个服务引用代码,选择Advanced,你会看到一个选项Reuse types in referenced assemblies。如果确保选中,并且引用添加到项目中,WCF将不会生成代理类型,而是使用引用的类型。

如果您已经添加的服务引用,首先引用您的共享类型,然后用鼠标右键单击服务引用,并选择Configure Service Reference得到它使用引用类型的重新生成客户端代码。

+0

这没有工作过,但从这次只挑选了我需要从列表中需要的程序集,并且工作得很好.. doh! – nat

5

不,你可以做到这一点:在这里看到我的问题:

WCF Service Reference generates its own contract interface, won't reuse mine

你可以有接口,类型的共享组件,并且两个服务和客户端(一个或多个)可以参考它:)

'重用引用类型..'选项确实覆盖了复杂类型,但上面的答案还涵盖了重用接口类型,这是IMO更好的选择,并且不包含在VS选项中。

0

除非我误解了,通过检查高级设置“中引用组件重用类型”中添加服务引用,匹配在引用的组件,它的任何数据的合同将被重用,而不是再生。