我正在创建一个抽象类。我希望我的每个派生类都被迫实现构造函数的特定签名。因此,如果我想强迫他们实现一种方法,我会做我会做的事情,我做了一个抽象的方法。
public abstract class A
{
abstract A(int a, int b);
}
但是我收到一条消息说抽象修饰符在这个项目上是无效的。我的目标是强制执行一些这样的代码。
public class B : A
{
public B(int a, int b) : base(a, b)
{
//Some other awesome code.
}
}
这都是 C# .NET 代码。谁能帮我吗?
更新 1
我想补充一些东西。我最终得到的是这个。
private A() { }
protected A(int a, int b)
{
//Code
}
这就是一些人所说的,默认是私有的,并且该类需要实现一个构造函数。但是,这不会强制使用签名 A(int a, int b) 的构造函数。
public abstract class A
{
protected abstract A(int a, int b)
{
}
}
更新 2
我应该清楚,为了解决这个问题,我将我的默认构造函数设为私有,并保护我的其他构造函数。我并不是真的在寻找一种让我的代码工作的方法。我处理好了。我希望了解为什么 C# 不允许您这样做。