2

假设我有 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 }
  }
}

女儿的相同Namegetter 方法但具有[Daughter]属性。

我可以这样做吗?

4

1 回答 1

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属性不是虚拟的,您将创建一个新属性,该属性隐藏基本类型上的属性,这可能不是您想要的。有关详细信息,请参阅了解何时使用覆盖和新关键字(C# 编程指南)

于 2013-07-20T03:02:06.200 回答