MVVM模型如何与WCF相关

时间:2013-05-11 20:53:54

标签: c# wpf wcf mvvm

我正在尝试使用MVVM架构创建示例WPF应用程序。我的模型具有Employee类{DTO}以及相应的View和viewmodel。

同样,我创建了WCF服务,该服务引用了WPF应用程序,以便利用我之前创建的模型{Employee}。

我的方案是我必须从服务中获取所有员工的列表。 该代码如下

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

    public ObservableCollection<Employee> loadAllEmployees()
    {

        return EmpData.LoadAllEmployees();
    }

是MVVM模型类的引用。 加载所有Employees的代码如下所示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 EmployeeList列为EmployeeService.Employee这个列表不会出现,但我的服务没有Employee类。

请建议我在哪里错。

2 个答案:

答案 0 :(得分:4)

您可以在共享库中定义Employee,以便WCF和WPF都可以引用并使用相同的Employee类。

答案 1 :(得分:1)

您是否使用服务参考引用WCF?如果是这样,那么您不需要直接引用服务库,因为服务公开的任何类型都将作为WPF应用程序中服务代理的一部分创建。如果直接引用库,那么对service方法的调用可能会返回作为Service Reference的一部分定义的模型,但是您的属性使用的是直接在服务库中定义的类型。