我正在尝试使用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
类。
请建议我在哪里错。
答案 0 :(得分:4)
您可以在共享库中定义Employee
,以便WCF和WPF都可以引用并使用相同的Employee
类。
答案 1 :(得分:1)
您是否使用服务参考引用WCF?如果是这样,那么您不需要直接引用服务库,因为服务公开的任何类型都将作为WPF应用程序中服务代理的一部分创建。如果直接引用库,那么对service方法的调用可能会返回作为Service Reference的一部分定义的模型,但是您的属性使用的是直接在服务库中定义的类型。