【问题标题】:WCF services with the same object具有相同对象的 WCF 服务
【发布时间】:2013-10-24 11:35:47
【问题描述】:

我有两个 WCF 服务要在我的应用程序中添加引用。这两个服务都有一个名为 X 的对象,它是同一个对象。

问题是在我的应用程序中添加引用后,我得到了两个不同的对象,它们具有相同的确切结构,但具有不同的命名空间。 这阻止了我在它们之间进行转换,并迫使我创建两个不同的对象,一个用于每个服务。

请注意我不想使用 dll。

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    请注意我不想使用 dll。

    你必须这样做。生成 WCF 代理时,您可以选择重用引用程序集中的类型。这必须是包含服务也使用的类型的程序集。另见How to: Configure a Service to Reuse Existing Types

    当然,正如@Franck 在评论中指出的那样,可以干预序列化过程。您还可以使用 AutoMapper 之类的工具。

    更有趣的是您的实际问题:为什么您不想使用 DLL 引用?您是否尝试过,但您是否希望部署一个单文件应用程序,然后是merge the assembly in your executable

    【讨论】:

    • 他不必那样做。当您反序列化时,您只需从格式中删除命名空间。我在上一份工作中用一堆自定义对象做到了这一点,它只有 1 到 5 行代码。序列化绑定器:msdn.microsoft.com/en-us/library/…
    • 是的,但是添加自定义(反)序列化是一件愚蠢的事情,因为添加 DLL 引用是两次单击的价值,并且会更优雅地解决问题。 OP 最好解释一下为什么他不想这样做。
    • 我只想使用该服务并在需要时对其进行更新。我不想要 dll,所以我不需要为第 3 方所做的每次更改都获取一个新文件。
    • 如果第三方进行了更新,您要么必须将他们的新 DLL 放入您的项目中,要么更新您的引用并修复您的序列化程序并重新发布您的整个客户端。我真的不明白如何不添加 DLL 来规避这一点。如果它们的更改向后兼容,您可以继续在旧 DLL 上运行。
    • 在这种情况下你是对的。问题的目的是检查是否可以使用没有 dll 的解决方案。
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多