Smartclient类和Web服务类之间的冲突

时间:2013-07-30 07:49:36

标签: c# web-services asp.net-4.5 smartclient

我创建了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

提前致谢。

1 个答案:

答案 0 :(得分:0)

命名空间相同;在一个方面,它非常清楚SmartInstitute.Automation.SmartInstituteServices.CourseService,而SmartInstitute。如果这是一个WCF服务,那么当您添加服务时,IDE和命令行工具中有一个选项可以重用现有类型 - 您必须确保启用此功能,并且该程序集声明类型是指定的。但是,最简单的方法是将DTO类型(Cource等)放在一个由两层引用和使用的专用简单程序集中 - 然后它通常“正常工作” - 使用WCF,at最小。如果你使用2.0风格的asmx web服务,那么:它永远不会工作(它不支持这种情况)。

另一种选择是:将Web服务代理类型视为:您的主域模型无关的DTO类型。然后映射 DTO类型和您的域模型之间的数据(有一些像AutoMapper这样的工具可以帮助解决这个问题,但老实说:手动执行它只需几行代码)。然后代理类型只能到封装Web服务的代码(你正在封装它,是吗?)。