C# 使用属性重写属性

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

假设我有三个班,父母,儿子和女儿。我希望儿子和女儿使用父类的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 }
  }
}
用于子对象的同名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是因为我不完全理解与方法相关的新关键字。