【问题标题】:Use other DataContract classes than the generated one's使用其他 DataContract 类而不是生成的类
【发布时间】:2013-12-17 12:45:30
【问题描述】:

我们的客户向我们发送了他们的 Web 服务 API 的 WSDL 文件。我们使用 Visual Studio 的“添加服务引用”来使用它。

但是:我们只想生成服务代理,而不是数据协定类。我们希望重用引用程序集中已有的类。

  • 如何指示“添加服务引用”不创建数据协定类?
  • ...或者如何指示 WCF 使用来自引用程序集的数据协定类?

【问题讨论】:

  • “高级”选项卡上的“重用类型”控件怎么样?
  • 生成服务合同 + 数据合同并复制粘贴您需要的内容并从现有程序集中替换您需要使用的任何内容..

标签: c# wcf datacontract


【解决方案1】:

这归结为“添加服务参考”的高级...部分的以下选项:

这也映射到svcutil.exe 中的/r / /reference 选项。

这默认为启用,所以如果它不起作用:很有可能您的类型不完全匹配。确保完全匹配的最简单方法是从两个项目中引用相同的库 dll,或者最坏情况相同的 .cs 文件(最好使用 dll 引用,IMO)。数据合同命名空间和名称是这里的常见罪魁祸首,并且必须完全匹配(成员也必须匹配)。

【讨论】:

    【解决方案2】:

    将您的数据契约类(或者甚至更好地为您的数据契约类创建一个新库并在服务和客户端重用)添加到项目中,包括您的服务引用。添加新服务引用或更新现有服务引用时,请选择“Reuse Types in Referenced Assemblies”。

    【讨论】:

      【解决方案3】:

      这是旧的,但我对此有一个疑问。 添加服务引用时我可以访问类,这没关系 在 Visual Studio 中处理同一解决方案中的所有项目并添加“项目”引用时,我看不到这些类。

      有没有办法在 Visual Studio 中使用同一解决方案中的所有项目来测试客户端代码?

      谢谢

      【讨论】:

        猜你喜欢
        • 2022-08-15
        • 1970-01-01
        • 1970-01-01
        • 2016-07-16
        • 1970-01-01
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多