Как создать массив разных обобщенных типов

Есть класс 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);
        }
    }

Ответы (0 шт):