Это очень похоже на методы расширения в C # 3 (и VB9). Наилучшее использование, которое я видел для них, это расширения до IEnumerable<T>
(и IQueryable<T>
), которые позволяют LINQ работать с произвольными последовательностями:
var query = someOriginalSequence.Where(person => person.Age > 18)
.OrderBy(person => person.Name)
.Select(person => person.Job);
(или что-то еще, конечно). Все это выполнимо, поскольку методы расширения позволяют эффективно объединять вызовы статическим методам, которые принимают тот же тип, что и они.