2014-09-01 2 views
-1

Итак, я пытался добавить метод расширения ForEach для linq, так как для IEnumerables нет ForEach, но по какой-то причине я не вижу его.Невозможно добавить метод расширения в LINQ

Метод расширения является:

public static IEnumerable<TSource> ForEach<TSource>(Func<TSource> action) 
{ 
    yield return action(); 
} 

И когда я пытаюсь вызвать его (gdMain является Grid):

+2

Это не метод расширения. – Dirk

+2

Для начала вам не кажется, что для метода * extension * нужен первый аргумент 'this'? Почему бы вам просто не поискать какой-либо метод расширения на MSDN, чтобы узнать, что такое их подписи? И наконец ... 'Enumerable.ForEach'. Вздох. – Jon

+0

да, я забыл об этом, но даже после добавления этого он не работает. http://i.imgur.com/M94OpQJ.png –

ответ

1

Чтобы IntelliSense показывая что-то, как вы пытаетесь в коде , вы должны добавить аргумент. this IEnumerable<TSource> source.

Или это не будет метод расширения для IEnumerable<TSource>gdMain.Children.Cast<UIElement>() будет возвращать IEnumerable<UIElement>)

public static IEnumerable<TSource> ForEach<TSource>(this IEnumerable<TSource> source, Func<TSource> action) 
{ 
    yield return action(); 
} 
Смежные вопросы