Есть ли способ предотвратить использование конструктора по умолчанию?
Все, что я могу придумать, это исключение, но мне бы хотелось что-то, что вызывает ошибку времени компиляции.
Есть ли способ предотвратить использование конструктора по умолчанию?
Все, что я могу придумать, это исключение, но мне бы хотелось что-то, что вызывает ошибку времени компиляции.
Я думаю, что он должен охватывать все базы...
Сделать его закрытым.
Итак,
class SomeClass
{
private SomeClass()
{
}
public SomeClass(int SomeParam)
{
}
}
Вы можете просто сделать это частным:
private MyClass()
{
}
Альтернативно (если вы еще не знаете), если вы просто объявляете конструктор с параметрами, по умолчанию он не добавляется компилятором, например.
private MyClass(string myParameter)
{
//Can't call new MyClass() anymore
}
Одна вещь, чтобы упомянуть, что другие нет. Конструктор по умолчанию должен все еще иметь возможность устанавливать биты реализации по умолчанию, чтобы избежать повторного использования. Это не проблема, если она является частной, так как вы все равно можете привязать к частному конструктору. Вы просто делаете его недоступным для внешних источников.
private MyClass()
{
}
public MyClass(string something) : this()
{
}
Это решает проблему. Однако обратите внимание, что защищенный может быть предпочтительной реализацией, если класс не запечатан.
Помимо других ответов, вы можете прочитать следующий текст, для получения дополнительной информации о шаблоне Singleton и некоторых примерах. Шаблон Singleton полагается на частный конструктор.