В последнее время я был занят погружением в лямбда-выражения, и есть некоторые специфические функции, которые я хотел изучить, но, похоже, просто не мог сделать из них головы или хвосты.
Предположим, у меня естьследующая логика в моем коде:
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()
выше?Я почти уверен, что как только увижу, как это делается, я смогу оттуда его забрать.
РЕДАКТИРОВАТЬ
Как указано в комментариях, MakeArray()
нужна ссылка на IEnumerable<>
.Обновлено, чтобы отразить это.