Немного справочной информации.
Я изучаю стек Web API, и я пытаюсь инкапсулировать все данные в форме объекта Result с такими параметрами, как Success и ErrorCodes.
Различные методы, однако, приведут к разным результатам и кодам ошибок, но объект результата, как правило, будет создан таким же образом.
Чтобы сэкономить время, а также узнать больше о возможностях async/await в С#, я пытаюсь обернуть все тела методов моих действий веб-api в асинхронном делете делегирования, но попал в ловушку..
Для следующих классов:
public class Result
{
public bool Success { get; set; }
public List<int> ErrorCodes{ get; set; }
}
public async Task<Result> GetResultAsync()
{
return await DoSomethingAsync<Result>(result =>
{
// Do something here
result.Success = true;
if (SomethingIsTrue)
{
result.ErrorCodes.Add(404);
result.Success = false;
}
}
}
Я хочу написать метод, который выполняет действие над объектом Result и возвращает его. Обычно с помощью синхронных методов было бы
public T DoSomethingAsync<T>(Action<T> resultBody) where T : Result, new()
{
T result = new T();
resultBody(result);
return result;
}
Но как преобразовать этот метод в асинхронный метод, используя async/wait?
Вот что я пробовал:
public async Task<T> DoSomethingAsync<T>(Action<T, Task> resultBody)
where T: Result, new()
{
// But I don't know what do do from here.
// What do I await?
}