Я создаю абстрактный класс. Я хочу, чтобы каждый из моих производных классов был вынужден реализовать определенную сигнатуру конструктора. Поэтому я сделал то, что сделал бы, если бы хотел заставить их реализовать метод, я сделал абстрактный.
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
}
Это делает то, что говорят некоторые люди, по умолчанию это private, и класс должен реализовать конструктор. Однако это не заставляет конструктор с подписью A (int a, int b).
public abstract class A
{
protected abstract A(int a, int b)
{
}
}
Обновление 2
Мне должно быть ясно, чтобы обойти это, я сделал свой конструктор по умолчанию закрытым, а другой мой конструктор защищенным. Я на самом деле не ищу способ заставить мой код работать. Я позаботился об этом. Я хочу понять, почему C # не позволяет вам сделать это.