Самый простой способ сделать С# не создавать экземпляр класса, если наследовать?

Каков самый простой способ заставить С# не создавать экземпляр класса, если наследовать?

Звучит странно, но я не хочу объяснять, почему. У меня есть базовый класс и два класса, которые наследуют его. Я хочу использовать только производный класс, а не базу. Класс вывода не имеет дополнительных функций. Самый простой способ НЕ разрешить мне писать новый BaseClass(); поэтому я не случайно его использую? У меня есть функции, которые работают с базовым классом, а не с производным.

Ответ 1

Сделать класс базовым классом abstract.

abstract class Person { }

class Programmer : Person { }

var person = new Person();          // compile time error
var programmer = new Programmer();  // ok

Ответ 3

Может ли базовый класс быть абстрактным? Это сделало бы это.

Ответ 4

public abstract class BaseClass {
...
}

Ответ 5

вместо нормального:

"public Class MyClass"

сделать это

"public abstract Class MyClass"

Ответ 6

Создайте конструктор BaseClass protected:

public class BaseClass {

   protected BaseClass()
   {
      // DO SOMETHING
   }

}


public class Derived : BaseClass {

   public Derived() {}
}

Ответ 7

То, как вы описываете свою потребность, делает ваш класс abstract способом. Это будет не позволяйте вам создавать экземпляр базового класса и позволят вам вызывать функции на Это. Это также позволит вам отмечать функции и свойства как абстрактные и заставить унаследованные классы реализовать их.

Если вам не нужно было делиться кодом, интерфейс был бы приятным вариантом. Это позволяет вам реализуйте его таким образом, который очень похож на класс abstarct и внедрения в нее.

Надеемся, что это добавит некоторую ценность.

Ответ 8

Использовать защищенный конструктор для базового класса