如何避免使用代理类的 Web 方法参数?
我在 .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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您只需选中“在指定引用的程序集中重用类型”即可使用原始类型,并在高级设置中为 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.
我的第一个建议是使用手写代理而不是生成代理,这样您就可以完全控制使用哪些类型。
我的第二个建议是使用像 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.)
您可以使用 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.
您可以“显示所有文件”并将生成的
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.