2013-02-16 2 views
1

공통 속성을 갖는보기 모델을 만들고 편집하는 데 몇 가지가 있습니다. 나는보기 모델에 대해 상속을 사용하는 것이 좋지 않다는 것을 온라인으로 읽었습니다. 그래서, 이런 유형의 뷰 모델을 갖는 것이 안전하다는 것을 배우고 싶습니다.상속은보기 모델에 대해 안전하다고 간주됩니다.

public class CustomerVM 
{ 
    public int CustomerId {get;set;} 
    public string Name { get; set;} 
} 

public class CustomerCreateVM : CustomerVM 
{ 
    public dictionary<string,string> ModelCustomers { get; set;} 
} 

public class CustomerEditVM : CustomerVM 
{ 
    public List<Orders> OrdersList {get;set;} 
} 

CustomerVM은 응용 프로그램에서 사용되지 않으며 공통 속성 만 저장하는 데 사용됩니다.

+0

뷰 모델의 범위와 책임이 명확히 정의되어있는 한 문제가 발생하지 않으며 기술적 인 제한이 없습니다. 그러나이 질문에 대해 12 가지 대답을 얻을 수 있습니다. –

+0

예, 온라인으로 검색해 보았습니다. 부적절하다고하는 게시물은 상속에 대한 구성을 제안했습니다. 그러나 나는 여기서 어떻게 구성을 사용하는지 보지 않고 상속에 대한 실제 문제를 알고 싶습니다. – Sunny

+0

이런 종류의 물건에는 은색 탄환이 없습니다. 보통 내 모든 뷰 모델은 Prism 프레임 워크에서 NotificationObject를 상속합니다. 공통점을위한 기본 뷰 모델을 만들지 만 실제로는 희귀하고주의를 기울여야합니다. 가능한 한 독립적 인 각 ViewModel을 좋아해. –

답변

2

인수의 경우 :

"모범 사례"철학은 "뚱뚱한 모델"을 향해 점점 더 움직이고있다. 따라서 모델 중심 디자인은 프리미엄입니다. 모델 뷰에 데이터를 전달하는 정말로서, 단순 가장

입니다 : 따라서 필요 순열과 추상화에 대하여 바람직

인수입니다. 이것은 "Controller-Dominated Logic"의 생각에 영향을 미친다.

요약 : 확실히 악의가 없습니다.

나쁘지 않습니다. "Fat"정교한 모델/"스키니 (Skinny)"컨트롤러 또는 데이터 처리를위한 단순한 (더 복잡하지 않은 점을 더 지적한) 모델을 위해 노력하고 있는지 여부에 따라 권장 여부.

개인적으로 모델의 단순성쪽으로 향합니다. 그러나 나는 다른 쪽을 감상하기에 충분한 수수께끼의 컨트롤러를 보았습니다.

0

"상속에 대한 구성을 좋아하십시오"라는 말처럼. 이 방법으로 상속을 사용하는 것보다 CustomerEdit에 CustomerVM을 추가하는 것이 좋습니다. 당신이 게시 한 간단한 경우에는 너무 중요하지 않다고 생각되지만, 상속 사용에 익숙해지면 시스템이 커지면서 모델이 복잡해지고 계층 구조의 깊이가 증가함에 따라 추악해질 수 있습니다.

+0

이유 나는 컴포지션에 익숙하지 않았기 때문에 객체와 직접적으로 관련된 속성이 objCustomerVM.CustomerCreateVM.ModelCustomers와 같을 것입니다. 그러나 상속을 사용하면 objCustomerCreateVM.ModelCustomers가됩니다. – Sunny

관련 문제