Есть класс Colum<T>, Есть класс Row со списком List<Colum>. И есть проблема, List<Colum> требует указать ещё тип T аки List<Colum<int>>, но мне не нужно это, мне нужно чтобы Row хранил в себе список Colum и не задумывался о том, какой тип шаблона у Colum. Что можете посоветовать? (знаю про dynamic, но пытаюсь обойтись без него)
Сделайте обычный класс Column, от него наследуйте обобщенные классы (Column<T> : Column), в Row храните список базового List<Column>.
Просто как пример
public abstract class Column
{
public abstract object ValueObject { get; }
}
public class Column<T> : Column
{
private T typedValue;
public Column(T value)
{
typedValue = value;
}
public override object ValueObject => typedValue;
public T Value => typedValue;
}
Строка
public class Row
{
private List<Column> _list = new List<Column>();
public void Add(Column c) =>
_list.Add(c);
public void Print() =>
_list.ForEach(v => Console.WriteLine(v.ValueObject));
}
Как использовать
var row = new Row();
row.Add(new Column<int>(5));
row.Add(new Column<string>("vasya"));
row.Print();
Вывод
5
vasya
Продвижение своими сайтами как стратегия роста и независимости