У меня есть несколько функций, которые берут в списке объектов и создают из них ряд диаграмм. Это выглядит повторительно, и я чувствую, что могу заменить эти подобные функции функциями с помощью лямбда-выражений или шаблонов, но не смог выяснить, как обращаться с разными именами свойств на каждом объекте. Может кто-нибудь помочь?Могу ли я заменить несколько подобных методов на выражение лямбда?
Вот что у меня есть:
private static Series getBuysSeries(List<Order> buys)
{
var series = new Series();
foreach (var buy in buys)
{
series.Points.AddXY(buy.Price, buy.Quantity);
}
return series;
}
private Series getPriceSeries(List<Trade> trades)
{
var series = new Series();
foreach (var trade in trades)
{
series.Points.AddXY(trade.DateTimeUTC, trade.UnitPrice);
}
return series;
}
Я думаю, что это может выглядеть следующим образом:
private static Series getBuysSeries(List<Order> buys)
{
return getSeries<Order>(buys);
}
private Series getPriceSeries(List<Trade> trades)
{
return getSeries<Trade>(trades);
}
private Series getSeries<T>(List<T> list)
{
...do the loop but account for property names...
}
Это действительно продуманный ответ. Я посмотрю на это и вернусь к вам. – FistOfFury
+1 для динамической типизирующей части этого ответа. Не знаю, что было возможно :-) – TGH
чувак, это было потрясающе. Именно то, что я искал! Оказывается, DateTimeUTC является объектом DateTime, поэтому я просто изменил подпись шаблона. private Series GetSeries (Список list, Func selector1, Func selector2) –
FistOfFury