私は、共通の祖先がさまざまなプロパティの設定に関係するすべてのロジックを担当するクラスのセットを作成しようとしています。子孫はプロパティのアクセスを変更するかどうか彼らは特定の子孫に必要です。プロパティのアクセス修飾子を増やす方法
私は以下のようにそれを実行しようコンパイラエラーを取得:は
「『保護された』オーバーライドする場合は、アクセス修飾子を変更することはできませんがメンバー継承された」私がしようとしているものを達成する方法はあります行う?おかげ
public class Parent
{
private int _propertyOne;
private int _propertyTwo;
protected virtual int PropertyOne
{
get { return _propertyOne; }
set { _propertyOne = value; }
}
protected virtual int PropertyTwo
{
get { return _propertyTwo; }
set { _propertyTwo = value; }
}
}
public class ChildOne : Parent
{
public override int PropertyOne // Compiler Error CS0507
{
get { return base.PropertyOne; }
set { base.PropertyOne = value; }
}
// PropertyTwo is not available to users of ChildOne
}
public class ChildTwo : Parent
{
// PropertyOne is not available to users of ChildTwo
public override int PropertyTwo // Compiler Error CS0507
{
get { return base.PropertyTwo; }
set { base.PropertyTwo = value; }
}
}
OOPS .. Seconds faster :) ..とにかくnewを使うのはオーバーライドと同じではありません。 newは親メンバーを隠し、これはもはや多態性ではありません。 – Galilyou
@José、私が必要としてくれてありがとう。 – WileCau