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

192
06 января 2018, 00:14

Доброго!

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

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

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

AClasses<T>
{
  List<T> Elements;
  void SomeMethod()
  {
    T _el = new T();
    _el.Some();
    Elements.Add(_el);
  }
}

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

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

Answer 1

Например, при помощи ограничений на T:

class AClasses<T> where T : IInterface, new()
{
    ...

Это будет работать, если у ваших классов есть пустой конструктор.

Если пустого конструктора нет, то создание экземпляров нужно делать как-нибудь по-другому, например, через фабрику или создающий делегат.

READ ALSO
Как передать в параметр метода метод - Unity

Как передать в параметр метода метод - Unity

Есть Скрипт_1 - SoundManagercs, в нем содержится:

221
Не воспроизводится музыка - Unity

Не воспроизводится музыка - Unity

При запуске игры, через 20 секунд включается панель, и вызывается метод, в этом методе запускается музыкаПроблема: после запуска метода, музыка...

317
Интерфейс IDisposable

Интерфейс IDisposable

Появились некоторые вопросы касательно реализацию IDisposable по шаблону, который предлагает Микрософт, где еще задействован финализатор

170
SQL query, BETWEEN. Windows forms. Запрос

SQL query, BETWEEN. Windows forms. Запрос

Не работает SQL запрос с BETWEENНеобходимо создавать отчет с данными о пациентах за период времени, заданный пользователем

212