Это проблема, с которой я столкнулся, когда мне нужен универсальный метод, который мог бы работать с произвольными списками чисел, например:
public T Calculate<T>(IEnumerable<T> numbers);
Я нашел решение использовать лямбда-выражение:
public T Calculate<T>(Func<T, T, T> add, IEnumerable<T> numbers);
Который вы бы затем назвали
var sum = this.Calculate((a, b) => a + b, someListOfNumbers);
Очевидно, что в некоторых случаях вы можете просто использовать + внутри кода вместо лямбда-выражений, но если вам нужно для выполнения математических операций в общем виде, это была самая простая вещь, которую я мог придумать, это безопасная компиляция.