MVVM模型与WCF的关系

本文关键字:关系 WCF 模型 MVVM | 更新日期: 2023-09-27 18:13:05

我正在尝试使用MVVM架构创建示例WPF应用程序。我有一个具有Employee类{DTO}的模型,具有相应的视图和视图模型。

同样,我已经创建了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>

如果将EmployeeList列为EmployeeService.Employee,则不会出现这种情况,但我的服务没有Employee类。

请告诉我哪里不对

MVVM模型与WCF的关系

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

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