2011-10-11 2 views
1

정확하게 내 문제의 용어를 알지 못합니다. 여기에 그런 관련 문제를 찾을 수없는 이유가있을 것 같습니다.2 모델을 MVC에서 1 모델로 병합

말하자면,이 모델이 있습니다.

public abstract class Member 
{ 
    public string ID { get; set; } 
    public string Username { get; set; } 
    public int MemberType { get; set; } //1 if person; 2 if business 
    //public string MemberName { get; set; } 
} 

public class Person : Member 
{ 
    public string LastName { get; set; } 
    public string FirstName{ get; set; } 
} 

public class Business : Member 
{ 
    public string BusinessName { get; set; } 
    public string TaxNo { get; set; } 
} 

지금은 유창한 API를 사용하여 모델에 액세스하는 데 문제가 없습니다.

이제 MemberType이 1 인 경우 Person 클래스의 LastName 및 FirstName 속성에서 파생 될 MemberName 인 Member 클래스에 속성을 추가하고 MemberType = 2 인 경우 Business 클래스의 BusinessName을 추가하고 싶습니다.

이런 종류의 일을 쉽게 수행 할 수 있습니까?

감사

답변

3

이것은 abstract 마법의 비트와 함께 수행 할 수 있습니다.

public abstract string MemberName { get; } 

그런 Person에이 같은 오버라이드 (override) : Business

public override string MemberName 
{ 
    get{ return FirstName + " " + LastName; } 
} 

이 같은 오버라이드 (override) : 이제

public override string MemberName 
{ 
    get{ return BusinessName; } 
} 

, 하나를 모든 클래스 instanceof를 Member

이 있습니다 Member을 상속 한 MemberName 속성은 올바른 표현을 반환합니다. 이것은 당신이 무엇을하고 싶은지간에 기본적인 상속/OOP/다형성입니다.

+0

+1 - 회원을 변경하지 못하도록 유지하고 전문 분야의 논리를 유지합니다. 그것은 나의 제안보다 깨끗합니다. – Fenton

+0

@Jamiec Sweet :) 감사합니다. – roggss

관련 문제