Я пытаюсь создать динамический http-клиент, использующий динамический прокси-сервер для перехвата вызовов и создания с ним http-запроса.
Проблема, с которой я столкнулся при использовании асинхронных методов:
private Task<object> PostAsync(HttpClient client, string url, HttpRequestParameters parameters, Type returnType)
{
return Task.Run(async () =>
{
var requestContent = new StringContent(Serializer.Serialize(parameters.BodyParameters));
var httpResponse = await client.PostAsync(url, requestContent);
var responseContent = await httpResponse.Content.ReadAsStringAsync();
return Serializer.Deserialize(responseContent, returnType);
});
}
Моя задача возвращает динамический объект / объект, а не T типа возврата «Перехват».
Я думал, что смогу использовать его следующим образом:
var task = PostAsync(client, url, parameters, returnType);
invocation.ReturnValue = task;
Поскольку задача, которая будетбыть возвращенным является исходной задачей, и она все еще ожидает, я думал, что это будет работать, но все, что я получаю, это исключение, что Задача не может быть преобразована в задачу моего типа (в данном случае это строка).
Спасибо за помощников
Редактировать: я видел Перехватить асинхронный метод , это то, что я пытался сделать, но я не смог вызвать задачу, даже используя отражение, я все еще получил то же исключение.