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

Что самый легкий путь состоит в том, чтобы заставить C# не инстанцировать класса, если не наследовались?

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

11
задан 14 January 2010 в 19:15
поделиться

7 ответов

Сделать аннотацию класса базовый класс.

abstract class Person { }

class Programmer : Person { }

var person = new Person();          // compile time error
var programmer = new Programmer();  // ok
45
ответ дан 3 December 2019 в 00:43
поделиться

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

-121--3507306-

Наборы абстрактного класса:

public abstract BaseClass
{



}

http://msdn.microsoft.com/en-us/library/sf985hc5.aspx

-121--3507305-
public abstract class BaseClass {
...
}
5
ответ дан 3 December 2019 в 00:43
поделиться

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

5
ответ дан 3 December 2019 в 00:43
поделиться

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

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

Надеюсь, это добавит некоторое значение.

1
ответ дан 3 December 2019 в 00:43
поделиться

Сделать конструктор BaseClass Protected:

public class BaseClass {

   protected BaseClass()
   {
      // DO SOMETHING
   }

}


public class Derived : BaseClass {

   public Derived() {}
}
1
ответ дан 3 December 2019 в 00:43
поделиться

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

«Общественный класс MyClass»

делает его

"public abstract Class MyClass"
5
ответ дан 3 December 2019 в 00:43
поделиться

Установите класс на абстрактный:

public abstract BaseClass
{



}

http://msdn. microsoft.com/en-us/library/sf985hc5.aspx

6
ответ дан 3 December 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: