Как преобразовать функцию, принимающую функцию func[T], в асинхронную?
У меня есть класс, который имеет функцию, которая запускает предоставленный делегат, который имеет тип
Func<T>
, как показано в следующем коде.public static class FunctionRunner { public static int RunSuppliedFunction( Func<int> aFunctionReturningInt ) => aFunctionReturningInt(); } public int CallingMethod() { return FunctionRunner.RunSuppliedFunction( () => 42 ); }
Это прекрасно компилируется.
Что делать, если я хочу изменить тип делегата на асинхронный, что, как мне кажется, означает, что его тип будет тогда
Func<Task<int>>
(но я могу ошибаться даже в этом)?Какой синтаксис мне нужен, чтобы заставить это работать?
Что я уже пробовал:
Кажется, я перепробовал все. Компилятор делает все возможное, чтобы сказать мне, что я делаю неправильно, но у меня сегодня блондинистый день, и я не могу понять этого. (Не ПК, чтобы сказать "светлый день", но поскольку у меня светлые волосы, я думаю, что мне это сойдет с рук.)
Это все, что у меня есть.:
public static class FunctionRunner { public static int RunSuppliedFunction( Func<int> functionReturningInt ) => functionReturningInt(); } private async Task<int> SomeFunction() { await Task.Delay( 100 ); return 42; } public async Task<int> CallingMethod() { return await FunctionRunner.RunSuppliedFunction( SomeFunction ); }
Что дает сообщение компилятора: "SomeFunction() имеет неправильный тип возвращаемого значения".