ASP.NET Web服务结果,代理类和类型转换

Rob*_*per 10 c# asp.net web-services

我还是ASP.NET世界的新手,所以我可以离开这里,但到目前为止这是我(有限的)知识的最佳选择!

假设我在Business命名空间中有一个标准的业务对象"Contact" .我编写了一个Web服务来从数据库中检索联系人的信息并将其返回.然后我写了一个客户端应用程序来请求所述细节.

现在,我还创建了一个实用程序方法,它接受"联系"并用它做一些魔法,Utils.BuyContactNewHat()比如说.当然需要类型的联系人Business.Contact.

然后我回到我的客户端应用程序并想要使用该BuyContactNewHat方法,所以我添加了对我的Utils命名空间的引用,并且它就是.但是,出现了一个问题:

Contact c = MyWebService.GetContact("Rob);
Utils.BuyContactNewHat(c); // << Error Here
Run Code Online (Sandbox Code Playgroud)

由于返回类型GetContactMyWebService.Contact和不Business.Contact符合预期的.我理解为什么这是因为在访问Web服务时,实际上是针对WSDL生成的代理类进行编程.

那么,是否有一种"更容易"的方式来处理这种类型的不匹配?我正在考虑尝试创建一个使用反射的通用转换器类,以确保两个对象具有相同的结构,而不是简单地将值从一个传递到另一个.

Lan*_*her 5

您走在正确的轨道上。为了使数据从代理对象返回到您自己的对象之一,您必须执行左右手代码。即复制属性值。我打赌,您已经有了使用反射的通用方法。

如果某些人只是想通过网络获取业务对象,则将使用Web服务(.net远程处理)以外的其他功能。否则他们将使用二进制序列化。我猜您使用Web服务是有原因的,因此您必须进行属性复制。