При попытке скомпилировать следующий код в LINQPad:
void Main()
{
DriveInfo.GetDrives().Select(GetProviderName).Dump();
}
static string GetProviderName(DriveInfo drive)
{
// some irrelevant WMI code...
}
Я получаю следующую ошибку:
Аргументы типа для метода 'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable, System.Func)' не могут быть выведены из использования. Попробуйте явно указать аргументы типа.
Если я использую лямбда как d => GetProviderName(d)
вместо группы методов, он отлично работает... Я очень удивлен, потому что я был уверен, что компилятор сможет вывести тип из группы методов. В области не существует другого метода GetProviderName
, и типы ввода и вывода четко определены, поэтому он должен быть неявно конвертируемым в Func<DriveInfo, string>
... не так ли?