Я недавно был занят погружением в лямбда-выражения, и есть некоторые специфические функции, которые я хотел изучить, но просто не мог понять.
Предположим, что в моем коде есть следующая логика:
List<A> foo; // assuming this is populated
string[] bar = foo.Select<A,string>(x => x.StringProperty).ToArray<string>();
Теперь, Я, возможно, хочу абстрагировать всю эту операцию в методе-обработчике, чтобы я мог сделать это вместо этого:
string[] bar = MakeArray<A,string>(foo, x => x.StringProperty);
int[] foobar = MakeArray<A,int>(foo, x => x.IntegerProperty);
Как мне написать тело этого метода? Я предполагаю, что подпись будет объявлена примерно так:
U[] MakeArray<T,U>( /* some lambda magic? */ ) where T : IEntity {}
, но я не знаю, как указать, что я ожидаю лямбда-выражение в качестве аргумента метода, и как это точно переводится в тело метода.
Может Кто-нибудь покажет мне, как создать функцию MakeArray ()
выше? Я почти уверен, что как только я увижу, как это делается, я смогу взять это оттуда.
EDIT
Как указано в комментариях, MakeArray ()
нужна ссылка на IEnumerable <>
. Обновлено, чтобы отразить это.