我有一个从 Windows 窗体应用程序(都是 .NET,都在同一个解决方案中)调用的 Web 服务,并且我希望我的 Web 服务从项目的其他地方返回一个自定义对象 - 这是他们的常见对象两者都共享一个引用,因为它在我的解决方案的第三个项目中。当我调用 web 服务时,它返回一个“Person”对象,但它位于 web 服务的命名空间中,并且它是从 web 服务本身生成的代理类创建的。因此,我无法对其进行操作并将其返回到我的程序,该程序需要一个基于类的共享副本的“Person”对象,而不是来自 web 服务命名空间的代理副本,当我尝试时出现错误将其 CType 为正确的类类型。
如何强制 web 服务使用类的本地副本,而不是代理副本?我的问题在这种情况下有意义吗?如果不是,我会澄清它。
值得注意的是——我已经使用 ByRef 传递所有参数,并使用这些返回值来填充我在返回时创建的对象的副本。这不是最好的方法!
最佳答案
如果您使用 svcutil.exe 生成 WCF 客户端代理,则可以在命令行上使用/reference 来指定包含公共(public)类的程序集。 Svcutil 应该重用该类定义,而不是在服务代理命名空间中生成新的定义。
此外,这仅在您的公共(public)类可序列化并按值传递时才有效(即,它公开为数据契约(Contract),而不是服务契约(Contract))。
关于.net - 强制 .NET webservice 使用本地对象类,而不是代理类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/216884/