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 }
  }
}

Name娘の getter メソッドと同じですが、[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プロパティが仮想でない場合は、基本型のプロパティを非表示にする新しいプロパティを作成することになりますが、これはおそらく必要なものではありません。詳細については、Override および New キーワードをいつ使用するか (C# プログラミング ガイド)を参照してください。

于 2013-07-20T03:02:06.200 に答える