在MVC中将2个模型合并为1个模型

时间:2011-10-11 10:50:19

标签: asp.net-mvc asp.net-mvc-3 ef-code-first

我不确切地知道我的问题的用语,也许这就是我在这里找不到相关问题的原因。

说,我有这些模型。

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访问这些模型时没有问题。

现在,我想要实现的是在我的Member类上添加一个属性,该属性是MemberName,如果MemberType为1,则将从Person类的LastName和FirstName属性派生,如果MemberTYpe = 2,则从BusinessName派生BusinessName。 / p>

有没有简单的方法来实现这种目标?

由于

1 个答案:

答案 0 :(得分:3)

这可以用一点abstract魔法来完成。

Member上有这个:

public abstract string MemberName { get; } 

然后在Person上覆盖为:

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

Business上覆盖:

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

现在,在调用Member属性时,任何继承MemberName的类的实例都将返回正确的表示形式。无论你想要什么,这都是基本的继承/ OOP /多态。