Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在MVC中将2个模型合并为1个模型_Asp.net Mvc_Asp.net Mvc 3_Ef Code First - Fatal编程技术网

Asp.net mvc 在MVC中将2个模型合并为1个模型

Asp.net mvc 在MVC中将2个模型合并为1个模型,asp.net-mvc,asp.net-mvc-3,ef-code-first,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 MemberNam

我不知道我的问题的确切术语,也许这就是为什么我在这里找不到这些相关问题的原因

喂,我有这些模型

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; }
}
现在,我在使用fluentapi访问这些模型时没有问题

现在,我想要实现的是在我的成员类上添加一个属性MemberName,如果MemberType为1,它将从Person类的LastName和FirstName属性派生,如果MemberType=2,则从Business类的BusinessName派生

有没有一个简单的方法来实现这种事情


谢谢

这可以通过一点
抽象
魔法来实现

成员上
具有以下内容:

public abstract string MemberName { get; } 
然后在
Person
上覆盖为:

public override string MemberName
{
   get{ return FirstName + " " + LastName; }
}
Business
上,您可以这样覆盖:

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

现在,调用
MemberName
属性时,继承
Member
的任何类的任何实例都将返回正确的表示形式。这是所有基本的继承/面向对象/多态性,不管你怎么称呼它。

+1-这使成员对更改保持封闭,并保持专业化中的逻辑。它也比我的建议干净。