Такие методы, как ваш, широко используются в Linq, например:
public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source,
Expression<Func<TSource, bool>> predicate)
Альтернативой может быть объявление типа делегата вместо вложенного Func<TService, TResult>
, но это также может сбить с толку более опытного разработчика, который привык работать с деревьями выражений.
Microsoft, очевидно, делает исключение из CA1006 для вложенных универсальных типов выражений, и мы тоже должны это делать.