2010-06-14 3 views
0

내가 가진 다음과 같은 문제에 대한 최선의 방법을 찾고 있습니다.인내심 연습 : 여러 객체 유형을 사용하는 ASP.NET MVC 컨트롤러/액션

나는 현재 단일 기본 객체를 상속하고 모두 모두 매우 유사한 많은 수의 객체를 가지고 있습니다. 동일한 코드를 많이 복제 할 필요없이 하나의 생성 동작과 하나의 편집 동작을 허용하는 솔루션이 있습니까?

그래서 예를 들어 내가 사람의 객체가 될 수 있습니다

public class PersonBase 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

를 그리고 내가 좋아하는 Person에서 개체의 수에게 상속이됩니다

public class SalesPerson : PersonBase 
{ 
    public double TotalCommission { get; set; } 
} 

public class Customer: PersonBase 
{ 
    public string Address { get; set; } 
} 

지금 현재 나는 액션을 가질 수 고객 기반을 만들 것입니다 :

[HttpPost] 
public virtual ActionResult Create(FormCollection collection) 
{ 
    var person = new PersonBase(); 

    UpdateModel(person); 

    if (Model.IsValid && person.IsValid) 
    { 
    // Save to the db 
    } 

    return View(); 
} 

이제이 사본을 쉽게 복사 할 수 있습니다. 코드를 작성하고 수정하여 salesPerson과 고객을 만들 수는 있지만 PersonBase를 기반으로하는 많은 수의 객체를 갖게 될 것이며 비슷한 코드를 반복적으로 피할 것입니다.

모든 유형의 Person에 대해 Create 활동을보다 일반적으로 만드는 방법은 무엇입니까?

감사

답변

0

나는 그것이 나를 위해 일한 발견 솔루션에서 dynamic을 사용하는 것이었다 C# 4. 그래서 내 코드는 다음과 같습니다 잘 모르겠어요

[HttpPost] 
public virtual ActionResult Create(int type, FormCollection collection) 
{ 
     dynamic person = new PersonBase(); 

     if (type == 1) 
     person = new SalesPerson(); 
     else if (type == 2) 
     person = new Customer(); 

     UpdateModel(person); 

     if (Model.IsValid && person.IsValid) 
     { 
     // Save to the db 
     } 

     return View(); 
} 
+0

나는이 좋은 사용을 고려하는 것 역학의 이 경우에는 John의 제네릭 답이 ​​더 적절할 것이라고 생각합니다. – Ryan

관련 문제