我创建了smartliclient和webservices。 我已经创建了带有webservices +相关类的服务器和带有桌面应用程序的客户端。 在smartclient项目中,名称空间和类名与servver-webservices中的相同。 客户项目中的问题 -
using SmartInstitute.Automation.SmartInstituteServices.CourseService; // webservice
CourseService service = new CourseService();
SmartInstitute.Course[] allCourses = service.GetAllCourses();
SmartInstitute.Course - 存在于smartClient项目中。 它显示了foll。错误 -
无法隐式转换类型 ' SmartInstitute.Automation.SmartInstituteServices.CourseService.Course []' to' SmartInstitute.Course []'
如果您想了解更多信息,请与我们联系。 我指的是http://www.codeproject.com/Articles/11163/Developing-Next-Generation-Smart-Clients-using-NET
提前致谢。
答案 0 :(得分:0)
命名空间不相同;在一个方面,它非常清楚SmartInstitute.Automation.SmartInstituteServices.CourseService
,而SmartInstitute
。如果这是一个WCF服务,那么当您添加服务时,IDE和命令行工具中有一个选项可以重用现有类型 - 您必须确保启用此功能,并且该程序集声明类型是指定的。但是,最简单的方法是将DTO类型(Cource
等)放在一个由两层引用和使用的专用简单程序集中 - 然后它通常“正常工作” - 使用WCF,at最小。如果你使用2.0风格的asmx web服务,那么:它永远不会工作(它不支持这种情况)。
另一种选择是:将Web服务代理类型视为:您的主域模型无关的DTO类型。然后映射 DTO类型和您的域模型之间的数据(有一些像AutoMapper这样的工具可以帮助解决这个问题,但老实说:手动执行它只需几行代码)。然后代理类型只能到封装Web服务的代码(你正在封装它,是吗?)。