C# список generics

144
31 июля 2019, 01:40

помогите пожалуйста разобраться с Generics.

Есть классы:

public class DataBase  {}
public class DataA:DataBase{}
public class DataB : DataBase{}
.....
public abstract class Comand<T> where T:DataBase
{
    public abstract void DoStuff(T p)
    {      
    }
    public virtual void DoOtherStuff()
    {    
    }
}
public class ComandA:Comand<DataA>
{
    public override void DoStuff(DataA p) //(DataA p)
    {
    }
}
public class ComandB : Comand<DataB>
{
    public override void DoStuff(DataB p)  
    {
    }
}    

Далее в классе, который собирается работать со списками команд я бы хотел сделать так, как указано в комментариях, т.е. общий список для всех команд, но могу только явно указать тип списков. Возможно ли такое, если да, то как этого добиться, если нет, то почему?

public class Program
{
        List<ComandA> comandsA=new List<ComandA>();
        List<ComandB> comandsB=new List<ComandB>();
//List<Comand<???>> comands=new List<Comand<???>>(); не могу так сделать
void CreateComands()
    {
        ComandA comandA=new ComandA();
        ComandB comandB = new ComandB();
        comandsA.Add(comandA);
        comandsB.Add(comandB);
        //comands.Add(comandA);   не могу так сделать
        //comands.Add(comandB);   не могу так сделать
    }
}
READ ALSO
Вывод текста в кодировке сp866 в richtextbox

Вывод текста в кодировке сp866 в richtextbox

Получаю файл текстовый файл в кодировке 866, необходимо вывести текст файла в richtextbox

124
Как отследить нажатие на sprite?

Как отследить нажатие на sprite?

Я могу узнать куда нажал пользователь:

120
В студии wpf (C#) не видны имена объектов

В студии wpf (C#) не видны имена объектов

В последнее время часто стало необходимо создавать некоторые формы в WPF и сталкиваюсь постоянно с одной и той же проблемойПосле задания имен...

133
Как запустить срипт python с помощью с# на google colab

Как запустить срипт python с помощью с# на google colab

Подскажите как такое сделатьЕсть https://github

112