Я знаю, что это не дает прямого ответа на ваш вопрос;однако, если большинство ваших конструкторов просто вводят новый параметр в предыдущем конструкторе, вы можете воспользоваться дополнительными аргументами (введенными в C # 4), чтобы уменьшить количество конструкторов, которые вам нужно определить.
Например,:
public class BaseClass
{
private int x;
private int y;
public BaseClass()
: this(0, 0)
{ }
public BaseClass(int x)
: this(x, 0)
{ }
public BaseClass(int x, int y)
{
this.x = x;
this.y = y;
}
}
public class DerivedClass : BaseClass
{
public DerivedClass()
: base()
{ }
public DerivedClass(int x)
: base(x)
{ }
public DerivedClass(int x, int y)
: base(x, y)
{ }
}
Вышеприведенное может быть уменьшено до:
public class BaseClass
{
private int x;
private int y;
public BaseClass(int x = 0, int y = 0)
{
this.x = x;
this.y = y;
}
}
public class DerivedClass : BaseClass
{
public DerivedClass(int x = 0, int y = 0)
: base(x, y)
{ }
}
И оно все равно позволит вам инициализировать BaseClass
и DerivedClass
с любым количеством аргументов:
var d1 = new DerivedClass();
var d2 = new DerivedClass(42);
var d3 = new DerivedClass(42, 43);