У меня есть два метода расширения в IDataReader со следующими сигнатурами:
internal static List<T> GetList<T>(this IDataReader reader, Func<string, T> del)
internal static double? GetDoubleOrNull(this IDataReader reader, string columnName)
GetDoubleOrNull
не имеет перегрузок.
В другом месте я могу сделать
Func<string, double?> del = reader.GetDoubleOrNull;
var x = reader.GetList(del);
или
var x = reader.GetList<double?>(reader.GetDoubleOrNull);
или просто передать метод экземпляра, например
public double? blah(string s)
var x = reader.GetList(blah);
но не могу
var x = reader.GetList(reader.GetDoubleOrNull);
Компилятор выдает ошибку
cannot convert from 'method group' to 'System.Func<string,double?>'
Я не понимаю это. Я думал, что поскольку для GetDoubleOrNull
нет перегрузки, не будет и разрешения перегрузки, и он сможет вывести параметр типа из сигнатуры метода.
Сложнее всего то, как это работает при передаче бла
.