Я не уверен, что это строго currying, но я в основном хочу добиться следующего. Учитывая Expression
:Как я могу выразить выражение в другое выражение?
Expression<Func<T1, T2, TResult>> expression
Я хочу передать в один аргументов и получением соответствующего Expression
где значение этого параметра фиксировано. Полученное выражение должно быть функционально эквивалентно expression
, за исключением того, что оно должно содержать один меньший параметр.
Это Результирующее выражение будет выглядеть примерно так:
Expression<Func<T2, TResult>> curriedExpression;
Я попытался это, но он не работает, потому что Expression
не неявно преобразовать в лямбда-выражения:
curriedExpression = b => expression(fixedValueForT1, b);
Обратите внимание, что curriedExpression
не должен содержать звонок expression
; он должен содержать дублированную логику, за исключением фиксированного значения.
Надеюсь, это имеет смысл. Дайте мне знать, если это неоднозначно или не объяснено хорошо.
Спасибо. Есть ли более простой способ, который ближе к тому, как вы будете делать то же самое с 'Func'? – Sam
Я боюсь, что нет более простого способа, когда вы работаете с выражениями, вы должны иметь дело с синтаксической структурой, и это всегда довольно сложный бизнес! –