Существуют ли уже встроенные функциональные конструкции C#/.NET, подобные этим? g(h()), или

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.

10
задан Eric Lippert 23 January 2012 в 23:06
поделиться