C# 使用属性重写属性
假设我有三个班,父母,儿子和女儿。我希望儿子和女儿使用父类的Name getter方法,但我希望分别为每个子类应用不同的属性C# 使用属性重写属性,c#,inheritance,properties,attributes,C#,Inheritance,Properties,Attributes,假设我有三个班,父母,儿子和女儿。我希望儿子和女儿使用父类的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 : Paren
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 }
}
}
用于子对象的同名getter方法,但具有[子对象]属性
我可以这样做吗?假设父级上有虚拟名称:
您始终可以这样做:
public class Son : Parent
{
[SonAttribute]
public override string Name
{
get { return base.Name; }
set { base.Name = value; }
}
}
如果Name属性不是虚拟的,您将创建一个新属性,该属性将隐藏基类型上的属性,这可能不是您想要的。有关详细信息,请参阅。假定父级上的名称为虚拟:
您始终可以这样做:
public class Son : Parent
{
[SonAttribute]
public override string Name
{
get { return base.Name; }
set { base.Name = value; }
}
}
如果Name属性不是虚拟的,您将创建一个新属性,该属性将隐藏基类型上的属性,这可能不是您想要的。有关详细信息,请参阅。子类和子类的名称字段属于父类还是子类?@Kevin私有字段属于父类。子类和子类的名称字段属于父类还是子类?@Kevin私有字段属于父类。@TGH-谢谢您的回答看起来它被删除了。我选择p.s.w.g是因为我不完全理解与方法有关的新关键字。@TGH-谢谢你的回答,看起来它已被删除。我选择p.s.w.g是因为我不完全理解与方法相关的新关键字。