Вызов универсального метода с анонимным типом (C #) - PullRequest
4 голосов
/ 30 мая 2011

Скажем так, я бы хотел перебрать string[][], добавить значение, используя анонимный тип, и выполнить общий метод ForEach-Extension для результата (блестящий пример, я знаю, но я полагаю, вы получитенемного!).

Вот мой код:

//attrs = some string[][]
attrs.Select(item => new { name = HttpContext.GetGlobalResourceObject("Global", item[0].Remove(0, 7)), value = item[1] })
            .ForEach</*????*/>(/*do stuff*/);

Что именно я бы вставил в параметр типа ForEach?

Вот как выглядит ForEach:

public static void ForEach<T>(this IEnumerable<T> collection, Action<T> act)
{
    IEnumerator<T> enumerator = collection.GetEnumerator();
    while (enumerator.MoveNext())
        act(enumerator.Current);
}

1 Ответ

8 голосов
/ 30 мая 2011

Вам не нужно явно указывать тип, поскольку он может быть выведен из предоставленных параметров:

attrs.Select(item => new 
                     { 
                         name = HttpContext.GetGlobalResourceObject("Global", 
                                                      item[0].Remove(0, 7)), 
                         value = item[1] 
                     })
     .ForEach(x => x.name = "something");
...