1

我有 1 个站点 (MySite.com) / 1 个 Web 服务 (WebService.MySite.Com) 和一个公共库 (LibCommon)

公共库包含一个模型,例如 UserModel = LibCommon.UserModel

Web服务有一个方法'Void CheckUser(LibCommon.UserModel model)'

但是,当我添加对方法的'WebService'引用时'MySite.com',它看起来像'Void CheckUser(WebService.MySite.Com.UserModel model)'

所以我认为很公平,我可以将一个对象转换为另一个对象,因为它们是相同的,但是 .NET 说我不能这样做?

有解决办法吗?

干杯,

4

1 回答 1

1

请注意,这是针对 WCF,而不是 ASMX Web 服务:

您不能直接将原始数据类强制转换为 WCF 服务引用向导生成的代理类。但是,您可以在客户端中重用原始数据类:

  • 添加包含传输对象(即LibCommon)的库引用作为对服务(WebService)和客户端(Mysite.com)的引用。在客户端添加服务引用时,选择高级选项卡,然后选择Reuse types in referenced assemblies。然后,这将重用公共数据传输类,而不是使用代理复制类型。

但是请注意,通过消除代理数据类,您正在引入客户端和服务器之间的直接耦合 - 只有在您可以控制客户端和服务器版本控制问题等时才应该这样做(例如,能够部署客户端和服务器的新版本)服务器同时)

顺便说一句,也可以消除共享服务接口,方法是将服务器端服务合同接口移动到一个单独的通用程序集中,然后使用诸如thisthis之类的技术。

于 2013-09-13T11:00:48.313 回答