public static Func<V> To<T, V>(this Func<T> g, Func<T, V> h)
{
return () => h(g());
}
public static Func<T> ToIdentity<T>(this T t)
{
return () => t;
}
Я иногда использую эти и другие функции при задержке оценки. Есть ли они уже в библиотеке .net?
Edit:
Вот пример использования:
public static string SuffixColumn(this string v, string suffix, int columns)
{
return
v.ToIdentity()
.ToScrubbedHtml()
.ToFormat(() => "{0} " + suffix.ToLower().PadLeft(columns, ' '))
.ToErrorText(v, suffix, columns)();
}
ToErrorText проверяет 'v' на легитимность (не код ошибки, не null, и т.д.), если хорошо, то запускает цепочку в Func, если плохо, то выдает отказоустойчивый текстовый результат. Если v, суффикс или столбцы не подходят, то ToFormat никогда не будет вызван. (Отсюда отложенное/неоцениваемое использование).
ToFormat - это почти композиция предоставленных Func и string.Format. ToIdentity используется для поднятия v в Func, а затем все в цепочке основано на некоторой Func из T.