Первоначальная ошибка в том, что разрешение перегрузки не удалось.Затем у компилятора C # есть некоторая эвристика, которая пытается выяснить, почему не удалось разрешить перегрузку, и в этом случае эти эвристики не сообщают вам «правильную» причину.
Сначала рассмотрим доступные перегрузки двух параметров:
public ActionBlock(Action<TInput> f, ExecutionDataflowBlockOptions o);
public ActionBlock(Func<TInput, Task> f, ExecutionDataflowBlockOptions o);
Второй параметр ExecutionDataflowBlockOptions
в обоих случаях.Но вы предоставляете DataflowBlockOptions
, который является базовым классом ExecutionDataflowBlockOptions
.Поскольку базовые классы не являются неявно конвертируемыми в производные классы, разрешение перегрузки завершается неудачно.Как только вы создадите правильный тип параметров, ваш код будет работать.
Соответствующий ответ Эрика Липперта об эвристике ошибок компилятора при сбое разрешения перегрузки: Передача лямбда-функций в качестве именованных параметров в C #