我有一个抽象类和一个子类
abstract class abstractClass
{
public int x;
protected abstractClass(int x)
{
this.x = x;
}
}
class childClass : abstractClass
{
childClass(int x)
: base(x)
{
}
}
我有很多像这样的子类,其中所有这些类总是通过调用 base(x)
来调用公共(public)构造函数 abstractClass1(int x)
构造函数。
当我想向构造函数添加一个新属性时,例如另一个 int y
,我必须编辑所有这些类并将 y
添加为参数在每个 child 的构造函数中加上抽象类构造函数。
考虑到我事先知道每个子类都将使用抽象类构造函数并且不会添加任何其他内容,是否有另一种方法可以做到这一点?
最佳答案
这是一个想法:创建一个 AbstractClassParameters
类:
class AbstractClassParameters {
public int x { get; private set; }
// add more parameters here
public AbstractClassParameters(int x) {
this.x = x;
// add more initializers here
}
}
现在您可以将 AbstractClassParameters
的实例传递给抽象类构造函数,每个子类都可以做同样的事情,只需传递它即可。
abstract class abstractClass
{
public int x;
protected abstractClass(AbstractClassParameters p)
{
this.x = p.x;
}
}
class childClass : abstractClass
{
childClass(AbstractClassParameters p) : base(p) { }
}
添加参数时,只需编辑AbstractClassParameters
类和abstractClass
,而不是每个子类。
关于c# - 抽象类的子类,总是调用抽象构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180460/