我有一个客户端应用程序正在使用接受并返回一些复杂类型参数的WCF服务。这些复杂类型保存在客户端应用程序和WCF服务都引用的单独程序集中。 问题是,当我在客户端应用程序中添加服务引用时,生成的引用类构建自己的复杂参数类型的版本,因此我无法从组件中传递定义原始类型的类型。 不确定这是否完全可以理解..
问题是..我是否必须编写某种反射深度复制例程来有效地从原始类型构建服务引用生成的类? 还是有更好的选择
任何非常乐意接受的帮助
NAT
答案 0 :(得分:7)
当您向代码添加服务引用时,请选择Advanced
,然后您会看到一个选项Reuse types in referenced assemblies
。如果确保选中了该引用,并且该引用已添加到项目中,则WCF将不会生成代理类型并改为使用引用的类型。
如果您已经添加了服务引用,请首先引用您的共享类型,然后右键单击“服务引用”,并选择Configure Service Reference
以使其使用您引用的类型重新生成客户端代码。
答案 1 :(得分:5)
不,你可以这样做:在这里看到我的问题:
WCF Service Reference generates its own contract interface, won't reuse mine
您可以拥有一个包含接口,类型的共享程序集,服务和客户端都可以引用它:)
'重用引用类型..'选项确实涵盖了复杂类型,但上面的答案还包括重用接口类型,IMO是更好的选择,而不是VS选项所涵盖。
答案 2 :(得分:0)
除非我误解,否则通过在“添加服务引用”中的“高级”设置中选中“重用引用程序集中的类型”,将重用与引用程序集中的数据类似的任何数据协定,而不会重新生成。