我不确切地知道我的问题的用语,也许这就是我在这里找不到相关问题的原因。
说,我有这些模型。
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>
有没有简单的方法来实现这种目标?
由于
答案 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 /多态。