C#でオブジェクト指向の原則を適切に適用する方法を学んでいます。私は小さな問題に遭遇しました、そして私はそれを解決する方法を理解することができません。私は次の問題に遭遇します:
現状:
public abstract class Foo
{
protected Foo()
{
//does nothing
}
}
public class Bar : Foo
{
public BarX ( int a, int b, int c) : base()
{
this.a = a;
this.b = b;
this.c = c;
}
public doStuff()
{
//does stuff
}
}
public class BarY : Foo
{
public Bar( int a, int b, int c) : base()
{
this.a = a;
this.b = b;
this.c = c;
}
public doStuff()
{
//does stuff
}
}
重要なのは、私はさまざまな種類のを持っているということですFoo
。この場合、それは円と長方形になります。各タイプが同じ属性を持っているので、それらに同じコンストラクターを持たせたいです。彼らは異なるdoStuff()
方法しか持っていません。私は多くの組み合わせを試しましたが、引数を基本クラスのコンストラクターに移動しようとするたびに、コードの移動方法に応じて、「一部のクラスには0個の引数(または3個の引数)を取るコンストラクターが含まれていない」と表示されます。
私の質問は、a、b、cの値の割り当てを抽象クラスのコンストラクターに移動する方法です。