我创建了许多 WCF 服务,出于参数考虑,它们被称为Service1和Service2。
这两个服务都返回(在某些时候,可能通过对象内部的关系)一个客户对象。
为了测试起见,我向 Service1 和 Service2添加了GetCustomer()方法,并且在基本的 WinForms 应用程序中添加了对这两个服务的服务引用。
Service1Client proxy1 = new Service1Client();
客户 customer1 = proxy1.GetCustomer(); //
^^^^^^ 不明确的引用,需要我命名为 WcfTestClient.Service1.Customer
Service2Client proxy2 = new Service2Client();
客户 customer2 = proxy2.GetCustomer();
^^^^^ 不明确的引用,需要我命名为 WcfTestClient.Service2.Customer
问题是,Service1和Service2返回的 Customer 对象都是同一类型的 Customer (WcfTestService.Customer)。为了解决这个问题,我需要包含完整的程序集名称而不仅仅是客户。
我在 Stack Overflow 上阅读了几篇文章,指出可以将数据契约编译成单独的程序集,但我并不特别喜欢这个想法,因为它可能仍然会导致客户端使用其他语言(例如 Java)时出现问题。
我看到的另一个解决方案是 SvcUtil.exe 方法,但据我所知,这个解决方案并没有解决我的命名空间问题,因为我需要为每个服务单独运行 Util?
如果有人有任何有用的建议,请与我们联系!