Страницы

Поиск по вопросам

среда, 4 марта 2020 г.

C# интерфейсы и абстрактные классы

#c_sharp #классы #наследование #интерфейс


Доброго!

Есть интерфейс IInterface,

Есть абстрактный класс его реализующий AClass

И есть абстрактный класс 

AClasses
{
  List Elements;

  void SomeMethod()
  {
    T _el = new T();
    _el.Some();
    Elements.Add(_el);
  }
}


Вот в методе SomeMethod() проблема так как это сделать нельзя. T должен наследоваться
от IInterface ну или на крайний случай от AClass. 

Так вот вопрос. Как заполнить List Elements в абстрактном классе
    


Ответы

Ответ 1



Например, при помощи ограничений на T: class AClasses where T : IInterface, new() { ... Это будет работать, если у ваших классов есть пустой конструктор. Если пустого конструктора нет, то создание экземпляров нужно делать как-нибудь по-другому, например, через фабрику или создающий делегат.

Комментариев нет:

Отправить комментарий