用属性替代属性
本文关键字:属性 | 更新日期: 2023-09-27 18:23:56
假设我有三个班(父母、儿子和女儿)。我希望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]
属性。
我能做这个吗?
假设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
属性不是虚拟的,您将创建一个新的属性,会隐藏基本类型上的属性,这可能不是您想要的。有关详细信息,请参阅"知道何时使用覆盖和新关键字"(C#编程指南)。