Страницы

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

понедельник, 20 мая 2019 г.

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

Доброго!
Есть интерфейс IInterface,
Есть абстрактный класс его реализующий AClass
И есть абстрактный класс
AClasses { List Elements;
void SomeMethod() { T _el = new T(); _el.Some(); Elements.Add(_el); } }
Вот в методе SomeMethod() проблема так как это сделать нельзя. T должен наследоваться от IInterface ну или на крайний случай от AClass.
Так вот вопрос. Как заполнить List Elements в абстрактном классе


Ответ

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

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

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