2013-05-11 54 views
2

我正在嘗試使用MVVM體系結構創建示例WPF應用程序。我的模型有Employee class {DTO}以及相應的View和viewmodel。MVVM模型如何與WCF相關

同樣,我已經創建了WCF服務,該服務引用了WPF應用程序以利用我之前創建的模型{Employee}。

我的方案是我必須從服務中獲得所有員工的列表。 對於該代碼如下

public class Service1 : IService1 
{ 
    EmployeeData EmpData = new EmployeeData(); 

    public ObservableCollection<Employee> loadAllEmployees() 
    { 

     return EmpData.LoadAllEmployees(); 
    } 

是從MVVM模型類的參考。 代碼加載所有的員工是如下的EmployeeService是我的WCF服務

 public ObservableCollection<Employee> EmployeeList 
    { 
     get 
     { 
      return employeeList;    
     } 
     set 
     { 
      employeeList = value; 
      NotifyPropertyChanged("EmployeeList"); 
     } 

     EmployeeService.Service1Client EmpService = new EmployeeService.Service1Client(); 
     EmployeeList = EmpService.loadAllEmployees(); 

但這裏現在面臨錯誤的

Cannot Implicitly convert type System.Collections.Object.ObservableCollection<WPF_TestProj.EmployeeService.Employee> to System.Collections.Object.ObservableCollection<WPF_TestProj.Model.Employee> 

如果delcare EmployeeListEmployeeService.Employee名單這不會到來,但我的服務不有Employee班。

請指教我,我錯了。

回答

4

您可以在共享庫中定義Employee,以便WCF和WPF都可以引用並使用相同的Employee類。

+0

+1簡明扼要的正確答案 – 2013-05-11 20:59:21

+0

使用WCF時不需要共享庫。如果一個WCF服務暴露了一個複雜類型,在這種情況下是Employee,那麼當在WPF中創建服務引用時,將在WPF項目中創建Employee類型。 – MotoSV 2013-05-12 09:46:55

1

您是否使用服務引用來引用WCF?如果是這樣,那麼您不需要直接引用服務庫,因爲服務公開的任何類型都將作爲WPF應用程序中服務代理的一部分創建。如果您直接引用庫,那麼對service方法的調用可能會返回定義爲Service Reference一部分的模型,但是您的屬性使用的是直接在服務庫中定義的類型。