C # Динамически назначать тип универсальной функции - PullRequest
0 голосов
/ 08 февраля 2019

Итак, у меня есть следующий делегат:

delegate Task<T> Atsk<T>();

У меня есть серия перегруженных конструкторов для класса.Основываясь на используемом конструкторе, фактической функции мне нужно выполнить изменения.Хотя необходимые типы известны заранее, я не буду знать, какие они есть, пока соответствующие конструкторы не будут переданы конструктору.

Если это конструкторы:

myClass (int a) myClass (int a, int b) myClass (int a, string b)

Исходя из этого, я хотел бы сделать следующее:

Atsk<Type1> atsk = new Atsk<Type1>(myFunc);, если объект создан с первым конструктором

Atsk<Type2> atsk = new Atsk<Type2>(myFunc);, если объект создан с помощью второго конструктора

Atsk<Type3> atsk = new Atsk<Type3>(myFunc); если объект создан с третьим конструктором

Теперь, используя условную логику и жесткое кодирование типа и функции, это работает, но я думаю, было бы неплохо, если бы я мог установитьтип и функция, требуемые в конструкторе, так что единственная строка кода, в которой я нуждаюсь, это:

Atsk<myVariableType> atsk = new Atsk<myVariableType>(myVariableFunc);

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

...