Как выполнить метод, переданный как аргумент Expression>, если функция в выражении является асинхронной?C#

Место общения программистов C#
Ответить
Anonymous
 Как выполнить метод, переданный как аргумент Expression>, если функция в выражении является асинхронной?

Сообщение Anonymous »

У меня есть веб-служба .net-core, которую я использую для выполнения действий с аргументами типа Expression при запуске интеграционных тестов:

Код: Выделить всё

// this is the usual pattern to call the service
_backgroundTasksService.RunBackgroundTask(x => x.Execute(id, name, color));

// and this is the service which stubs the calls for unit tests:
public class BackgroundTasksServiceStub : IBackgroundTasksService {
private readonly IServiceProvider _serviceProvider;

public BackgroundTasksServiceStub(IServiceProvider serviceProvider){
_serviceProvider = serviceProvider;
}

public void RunBackgroundTask(Expression methodCall){
var service = _serviceProvider.GetService();
var method = methodCall.Compile();
method(service);
}
}
Вызов этой службы-заглушки работает нормально, когда MyService.Execute является синхронным методом, но работает неправильно, когда MyService.Execute является асинхронным (

Код: Выделить всё

async Task...
) ...
Что мне следует сделать, чтобы эта служба-заглушка могла синхронно обрабатывать вызов асинхронных методов?
Кстати, я знайте, что на самом деле сервис работает нормально, так что выход есть! Только в модульных тестах плохо себя ведет. Это первый вопрос, на который мне ответили по этому поводу.

Подробнее здесь: https://stackoverflow.com/questions/786 ... when-the-f
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»