Как создать массив разных обобщенных типов
Есть класс Act<T,K>
public abstract class Act<T,K>
{
public T Input { get; set; }
public abstract K Action(T input);
}
И к примеру два наследующих его класса
public class FindPicA:Act<Bitmap,Point>
public class ClickA : Act<Point, bool>
Я не могу понять как хранить их в одном списке Например, способ ниже(уже проще просто object сделать у переменных) выдает ошибку "Не удается преобразовать из ClickA в Act<object, object>"
List<Act<object, object>> acts
"Шакалить" все в object не хочется из-за упаковки и распаковки. Можно ли как-то обойти данную проблему? Сама цель задачи иметь метод Action с разными входными и выходными типами.
Грубо говоря вызов планируется следующим образом, но в данном случае я не вижу возможности уйти от object. Только сейчас увидел, что f не используется, но суть не в этом.
public class Actions<T,K> : Act<T, K>
{
public List<Act<object, object>> Acts { get; set; }
public override K Action(T f)
{
object prevActRes;
prevActRes = Input;
for (int j = 0; j < Acts.Count; j++)
prevActRes = Acts[j].Action(prevActRes);
if (prevActRes is K)
return (K)prevActRes;
else
return default(K);
}
}