как построить выражение <Func> без входных параметров?

#linq

#linq

Вопрос:

Я использую Expression.Call для динамического построения MethodCallExpression. Вызов предназначен для «первого» метода. Затем мне нужно преобразовать его в Expression<Func<x,y>> (x и y являются типами, и это не имеет отношения к вопросу). Я пытаюсь сделать это с помощью Expression.Lambda<Func<x,y>> , но получаю Incorrect number of parameters supplied for lambda declaration исключение при передаче
new ParameterExpression[]{} (т.е. пустой массив) во входном параметре ParameterExpression[].
что должно быть предоставлено Expression.Lambda , когда лямбда-выражение принимает нулевые параметры?

Ответ №1:

Action соответствует ли делегат a void , который не принимает параметров. Func<x, y> говорит, что метод принимает x и возвращает y . Все Func делегаты возвращают значения, и все Action делегаты являются void .