我正在寻找以下问题的最佳方法。
我目前拥有大量的对象,这些对象都是为单个基础对象继承的,并且都非常相似。是否有可用的解决方案,允许一个创建操作和一个编辑操作,而无需复制大量相同的代码。
例如,我可能有一个人物对象:
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和customer,但是我会根据PersonBase有大量的对象,而且我会想要重复类似的代码。避免。
对于所有类型的Person,使Create动作更通用的方法是什么?
由于
答案 0 :(得分:0)
我发现对我有用的解决方案是使用C#4中的dynamic
。所以我的代码看起来像:
[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();
}