2013-05-11 2 views
2

MVVM 아키텍처를 사용하여 샘플 WPF 응용 프로그램을 만들려고합니다. 나는 Employee 클래스 {DTO}에 해당하는 View 및 viewmodel이있는 모델을 가지고 있습니다.MVVM 모델과 WCF의 관계

마찬가지로 이전에 만든 모델 {Employee}을 사용하도록 WPF 응용 프로그램의 참조가있는 WCF 서비스를 만들었습니다.

내 시나리오는 모든 직원의 서비스 목록을 가져와야한다는 것입니다.

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(); 

이다 그러나 여기이 늘 올 EmployeeService.Employee의 목록으로 EmployeeList을 delcare 경우

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

로 오류에 직면하고있다,하지만 내 서비스가 필요 없다 아래와 같이 모든 직원을로드 코드입니다 Employee 클래스.

제게 잘못 생각해주세요.

답변

4

공유 라이브러리에 Employee을 정의하면 WCF와 WPF가 동일한 Employee 클래스를 참조하고 사용할 수 있습니다.

+0

+1 간결하고 완전하게 올바른 대답 –

+0

WCF를 사용할 때 공유 라이브러리가 필요하지 않습니다. WCF 서비스가 복잡한 유형 (이 경우 Employee)을 노출하면 WPF 내에서 서비스 참조가 만들어지면 Employee 유형이 WPF 프로젝트 내에서 만들어집니다. – MotoSV

1

서비스 참조를 사용하여 WCF를 참조하고 있습니까? 그렇다면 서비스가 공개하는 모든 유형이 WPF 응용 프로그램 내의 서비스 프록시의 일부로 만들어 지므로 직접 서비스 라이브러리를 참조 할 필요가 없습니다. 라이브러리를 직접 참조하는 경우 서비스 메소드를 호출하면 서비스 참조의 일부로 정의 된 모델이 반환되지만 속성은 서비스 라이브러리에서 직접 정의 된 유형을 사용하고있을 가능성이 있습니다.

관련 문제