【问题标题】:how MVVM model is related with WCFMVVM 模型与 WCF 的关系
【发布时间】:2013-05-11 20:53:53
【问题描述】:

我正在尝试使用 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>

如果 delcare EmployeeList 作为 EmployeeService.Employee 的列表,这不会出现,但我的服务没有 Employee 类。

请指出我哪里错了。

【问题讨论】:

    标签: c# wpf wcf mvvm


    【解决方案1】:

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

    【讨论】:

    • 使用 WCF 时不需要共享库。如果 WCF 服务公开了一个复杂类型,在本例中为 Employee,则在 WPF 中进行服务引用时,将在 WPF 项目中创建 Employee 类型。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 2014-12-02
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      相关资源
      最近更新 更多