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

时间:2010-05-13 01:39:51

标签: asp.net .net proxy-classes

我在.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而言,这些类型并不相同。

我怎样才能解决这个问题?

4 个答案:

答案 0 :(得分:2)

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

enter image description here

答案 1 :(得分:0)

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

我的第二个建议是使用像Web Services Factory这样的工具,它可以让你在生成代码时重用现有的类(如果类是合适的话)。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

这是一个简短的丑陋方式。