如何避免使用代理类的 Web 方法参数?

发布于 2024-09-01 04:28:17 字数 517 浏览 4 评论 0原文

我在 .NET 类库项目 A 中有一个名为 DataUnification.ClientData.ClientInfo 的可序列化 POCO。

它用在项目 B 中定义的 Web 服务的参数中:

public XmlDocument CreateNewClient(ClientInfo ci, string system)

我现在希望从项目 C 调用此 Web 方法并使用原始的 DataUnification.ClientData。 ClientInfo 输入参数。然而,由于生成的代理类,它现在变成了不同的类型:WebServices.ClientDataUnification.DataUnificationWebService.ClientInfo

就 .NET 而言,这些不是相同的类型。

我该如何解决这个问题?

I have a serializable POCO called DataUnification.ClientData.ClientInfo in a .NET class library project A.

It's used in a parameter for a web service defined in project B:

public XmlDocument CreateNewClient(ClientInfo ci, string system)

I now wish to call this web method from project C and use the original DataUnification.ClientData.ClientInfo type in the parameter. However due to the generated proxy class it has now become a different type: WebServices.ClientDataUnification.DataUnificationWebService.ClientInfo.

As far as .NET is concerned these are not the same types.

How can I get around this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梦旅人picnic 2024-09-08 04:28:17

您只需选中“在指定引用的程序集中重用类型”即可使用原始类型,并在高级设置中为 Web 服务生成代理时选择包含原始类型的程序集。

在此处输入图像描述

You can use original types by just checking "Reuse types in specified referenced assemblies" and select the assembly containing original types while generating proxies for your web service in the advance settings.

enter image description here

半暖夏伤 2024-09-08 04:28:17

我的第一个建议是使用手写代理而不是生成代理,这样您就可以完全控制使用哪些类型。

我的第二个建议是使用像 Web 服务工厂这样的工具,它有一个选项可以让您在生成代码时重用现有的类(如果这些类合适的话)。

My first suggestion would be to use hand-written proxies instead of generated proxies, so you have full control over which types are used.

My second suggestion would be to use a tool like the Web Services Factory, which has an option to let you reuse existing classes when it generates code (if the classes are appropriate.)

久隐师 2024-09-08 04:28:17

您可以使用 automapper http://automapper.codeplex.com/ 创建一个新的 DataUnification.ClientData.ClientInfo来自 WebServices.ClientDataUnification.DataUnificationWebService.ClientInfo 实例。

You could use automapper http://automapper.codeplex.com/ to create a new DataUnification.ClientData.ClientInfo from the WebServices.ClientDataUnification.DataUnificationWebService.ClientInfo instance.

冷情 2024-09-08 04:28:17

您可以“显示所有文件”并将生成的 reference.cs 的内容复制到新文件中,然后删除生成的代理及其所有依赖文件。

现在,在新的 reference.cs 中,删除生成的 dto 类并更新所有引用。

这就是最短的丑陋方式。

You can 'show all files' and copy the contents of the generated reference.cs into a new file, then delete the generated proxy and all of its dependent files.

Now, in your new reference.cs, delete the generated dto classes and update all references.

That is the short ugly way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文