假设我有3个班级(父母,儿子和女儿)。我希望Son和Daughter使用Parent的Name getter方法,但我想分别为每个子类应用不同的属性。
public class Parent {
private string name;
public string Name {
get { return this.name; }
set { this.name = value != null ? value.trim() : null; }
}
}
和儿子......
public class Son : Parent {
[SonAttribute]
public string Name { // keep parent behavior }
}
}
相同的Name
女儿的getter方法,但具有[Daughter]
属性。
我可以这样做吗?
答案 0 :(得分:4)
假设Name
虚拟Parent
:
public class Parent
{
public virtual string Name
{
get { return this.name; }
set { this.name = value != null ? value.trim() : null; }
}
}
您可以随时执行此操作:
public class Son : Parent
{
[SonAttribute]
public override string Name
{
get { return base.Name; }
set { base.Name = value; }
}
}
如果Name
属性不是虚拟的,您将创建一个新属性,隐藏基础类型上的属性,这可能不是您想要的。有关详细信息,请参阅Knowing When to Use Override and New Keywords (C# Programming Guide)。