Страницы

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

понедельник, 8 апреля 2019 г.

C# generic. Можно ли создать список, состоящий из экземпляров обобщенного класса?

Есть обобщенный абстрактный класс, у которого есть абстрактные методы:
public abstract class SomeType where T : IComparable { public abstract T GetRandom(); //... }
Хотелось бы, чтобы экземпляры данного класса могли помещаться в один список, будь то SomeType или SomeType. Ожидается следующее:
var list = new List>();
Есть ли возможность сделать что-то подобное средствами языка C#?
UPD. Возможно, я нашел решение, но не уверен, что оно верное (пока не попробовал). Думаю использовать тип dynamic
var list = new List>>();


Ответ

Если вы собрались не просто хранить любые объекты в списке, а что-то с ними делать - вам нужен вам нужен общий базовый класс или интерфейс для них, куда вы соберете проводимые над элементами списка операции:
public abstract class SomeType { // ... }
public class SomeType : SomeType where T : IComparable { // ... }
// ...
var list = new List();
В некоторых случаях вам подойдет тип object:
var list = new List();

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

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