2013-07-30 68 views
0

我已經創建了smartliclient和webservices。 我已經創建了具有webservices +相關類和客戶端與桌面應用程序的服務器。 在smartclient項目中,名稱空間和類名與在servver-webservices中的相同。在客戶端 發行項目 -Smartclient類和webservice類之間的衝突

using SmartInstitute.Automation.SmartInstituteServices.CourseService; // webservice 
CourseService service = new CourseService(); 
SmartInstitute.Course[] allCourses = service.GetAllCourses(); 

SmartInstitute.Course - 存在的SmartClient項目。 它顯示foll。錯誤 -

無法隱式轉換類型 'SmartInstitute.Automation.SmartInstituteServices.CourseService.Course []' 爲 'SmartInstitute.Course []'

請讓我知道,如果你想了解更多信息。 我指的是http://www.codeproject.com/Articles/11163/Developing-Next-Generation-Smart-Clients-using-NET

在此先感謝。

回答

0

命名空間是不是相同;在一個,它很明顯SmartInstitute.Automation.SmartInstituteServices.CourseService,而SmartInstitute。如果這是一個WCF服務,那麼當您添加服務時,IDE和命令行工具中有一個選項可用於重新使用現有類型 - 您必須必須確保啓用該功能,並且聲明類型的程序集是指定。然而,最簡單的方法是將DTO類型(Cource等)放在一個由兩個層引用和使用的專用簡單程序集中 - 然後它通常「正常工作」 - 至少帶有WCF。如果您使用2.0樣式的asmx Web服務,那麼:它將永遠不會工作(它不支持這種情況)。

另一種選擇是:將Web服務代理類型視爲:與您的主域模型無關的DTO類型。然後地圖 DTO類型和你的域模型之間的數據(有一些像AutoMapper這樣的工具可以幫助你做到這一點,但老實說:手動執行它只有幾行代碼)。然後,代理類型只能達到封裝Web服務的代碼(你封裝了這個,是嗎?)。

+0

謝謝..讓我轉換asmx webservice到WCF應用程序。 – Abhi