Использование F# функций из C#

436
26 октября 2017, 06:48

В проекте на C# понадобилось использовать F# функцию (FSharpFunc). Но при попытке это сделать получаю ошибку компиляции

error CS1660: Не удается преобразовать лямбда-выражение к типу "FSharpFunc <_, _>", так как он не является типом делегата.

MCVE

Класс User

class User
{
    public int Age { get; set; }
}

Тестовые данные

var users = new List<User>
{
    new User { Age = 15 },
    new User { Age = 21 },
    new User { Age = 32 },
    new User { Age = 35 },
    new User { Age = 23 }
};

Попытка вызова функции из модуля Seq

User max = SeqModule.MaxBy<User, int>(x => x.Age, users);
Answer 1

К сожалению, на данный момент, для того, чтобы вызвать F# функцию нужно явно использовать конвертер:

User max1 = SeqModule.MaxBy(FSharpFunc<User, int>.FromConverter(x => x.Age), users);

или совсем немного более короткий способ

User max2 = SeqModule.MaxBy<User, int>((Converter<User, int>)(x => x.Age), users);
READ ALSO
Столкновение коллайдеров в unity3d?

Столкновение коллайдеров в unity3d?

Приветствую! Подскажите, как сделать чтобы при столкновении двух объектов, жизнь отнималась у игрока только один разНигде не могу найти этого...

914
Как в selenium кликнуть по кнопке AJAX

Как в selenium кликнуть по кнопке AJAX

Нужно написать тест для отработки кликов по кнопкам на сайте

267
Universal Windows App открытие произвольного файла

Universal Windows App открытие произвольного файла

Коллеги, пытаюсь создать свое первое UWP приложениеНеобходимо открыть произвольный файл, но не представляю как это сделать

240