У меня есть следующий код:
private int AllFeb(Forecast f, IRepository repository)
{
return All(f, repository, f.Feb);
}
private int AllJan(Forecast f, IRepository repository)
{
return All(f, repository, f.Jan);
}
private int All(Forecast f, IRepository repository, int callBk)
{
var otherForecasts = repository.Query<Forecast>().Where(r => r.PersonId == f.PersonId);
if (otherForecasts.Any())
{
return otherForecasts.Sum(r => r.Feb) + callBk;
}
return 0;
}
Как видите, я пытаюсь придумать общую функцию, которую можно использовать для каждого
месяц. Проблема в том, что мне нужна следующая строка в методе All
:
otherForecasts.Sum(r => r.Feb)
должно быть общим, но мне нужно, чтобы обратный вызов внутри метода Sum
передавался извне (поскольку я не хочу, чтобы он был жестко закодирован как r.Feb
.
Есть ли способ избежать дублирования кода здесь?