Для версий, которые в настоящее время не используются в стандартных формулах приготовления, вы можете легко создать свой собственный кран с помощью инструмента из https://github.com/buildtools-version-taps/homebrew-versions-tap-tool
Если я правильно понял, вы хотите карри а Func<T, R>
.
Вы можете написать такой метод:
public static Func<R> Curry<T, R>(Func<T, R> func, T arg) {
return () => func(arg);
}
, который очень похож на ваш второй Foo
метод, так что вы были на правильном пути.
А затем сделайте:
var curried = Curry(func, someIContext);
LogExecutionDuration(curried);
Обратите внимание, что вы также можете просто сделать:
LogExecutionDuration(() => func(someIContext));