以下の 2 つのクラスを考えると、int パラメーターを使用して Child コンストラクターを呼び出し、次に int パラメーターを使用して親コンストラクターを呼び出し、最後に Child パラメーターなしのコンストラクターを呼び出したいと思います。
これは、オプションのパラメーターを使用せずに実行できますか?
public class Parent
{
public Parent()
{
Console.WriteLine("Parent ctor()");
}
public Parent(int i)
{
Console.WriteLine("Parent ctor(int)");
}
}
public class Child:Parent
{
public Child()
{
Console.WriteLine("Child ctor()");
}
public Child(int i)
{
Console.WriteLine("Child ctor(int)");
}
}
.NET 2.0 で達成したい .NET 4 のロジックは次のとおりです。
public class Parent2
{
public Parent2(int? i = null)
{
Console.WriteLine("Parent2 ctor()");
if (i != null)
{
Console.WriteLine("Parent2 ctor(int)");
}
}
}
public class Child2 : Parent2
{
public Child2(int? i = null)
: base(i)
{
Console.WriteLine("Child2 ctor()");
if (i != null)
{
Console.WriteLine("Child2 ctor(int)");
}
}
}
これが、私たちが議論していた製品コードです
public class DataPoint<T>
{
public DataPoint() { }
public DataPoint(T xValue, int yValue)
{
XAxis = xValue;
YAxis = yValue;
}
public T XAxis { get; set; }
public int YAxis { get; set; }
}
public class DataPointCollection<T> : DataPoint<T>
{
DataPointCollection()
{
Labels = new List<string>();
}
DataPointCollection(T xValue, int yValue)
: base(xValue, yValue)
{ }
public List<string> Labels { get; set; }
}
編集:
この時点での質問の理由は、最小量のコードで DRY 方法論に従うための「コード ゴルフ」アカデミック エクササイズです。通常のパターンは、各コンストラクターから実行する共通コードを持つクラスで内部プライベート関数を使用することです。
編集2
実動コードの例を追加しました。