我有1个站点(MySite.com)/ 1个Web服务(WebService.MySite.Com)和一个公共库(LibCommon)
公共库包含一个模型,例如UserModel = LibCommon.UserModel
网络服务有方法'Void CheckUser(LibCommon.UserModel model)'
但是,当我将'WebService'
引用添加到'MySite.com'
时,方法会发生变化,使其看起来像'Void CheckUser(WebService.MySite.Com.UserModel model)'
所以我认为我可以将一个对象强制转换为另一个对象,因为它们是相同的但.NET表示我不能这样做吗?
有解决方法吗?
干杯,
答案 0 :(得分:1)
请注意,这适用于WCF,而不适用于ASMX Web服务:
您无法直接将原始数据类强制转换为WCF服务引用向导生成的代理类。但是,您可以在客户端中重用原始数据类:
LibCommon
)的库引用,作为对服务(WebService
)和客户端(Mysite.com
)的引用。在客户端上添加服务引用时,请选择高级选项卡,然后选择Reuse types in referenced assemblies
。然后,这将重用公共数据传输类,而不是使用代理复制类型。但请注意,通过消除代理数据类,您将在客户端和服务器之间引入直接耦合 - 只有在您同时控制客户端和服务器w.r.t时才应执行此操作。版本控制问题等(例如,能够同时部署客户端和服务器的新版本)
另外,通过将服务器端服务合同接口移动到单独的通用程序集中,然后使用this或{{3等技术,也可以消除共享服务接口。 }}