C# Шаблоны и Списки

83
06 мая 2021, 17:40

Есть класс Colum<T>, Есть класс Row со списком List<Colum>. И есть проблема, List<Colum> требует указать ещё тип T аки List<Colum<int>>, но мне не нужно это, мне нужно чтобы Row хранил в себе список Colum и не задумывался о том, какой тип шаблона у Colum. Что можете посоветовать? (знаю про dynamic, но пытаюсь обойтись без него)

Answer 1

Сделайте обычный класс 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
READ ALSO
Доступ с Composer, идущим в комплекте с Open Server из Php Storm

Доступ с Composer, идущим в комплекте с Open Server из Php Storm

Я знаю, что Open Server имеет в комплектации консоль, откуда есть доступ к ComposerТем не менее, я бы хотел обойтись без этой консоли и работать с Composer...

89
Поиск всех значений в тексте

Поиск всех значений в тексте

есть текст [a]какой то текст[/a] еще куча какого то текста, [a]какой то текст[/a] есть регулярка /(\[a+\/a\])/ если текст без переноса строки, то находит...

112
JSON.parse Unexpected token T in JSON at position 12

JSON.parse Unexpected token T in JSON at position 12

Есть у нас сформированный на php масив данных:

101
Репозитории и DRY

Репозитории и DRY

вопрос по репозиторям, их аналогам и DRYБерем простой пример:

107