Я запутался в правильном способе использования передачи лямбды в fun c делегат для httpClient.
Например, Call является обобщенной c функцией, где есть ожидание в TaskFunctor делегат функции.
Каким должен быть правильный способ передачи функции HttpClient в lamda для taskFunctor, чтобы он мог ожидать ответа?
private async Task<HttpResponseMessage> Call(string operationId, Func<Task<HttpResponseMessage>> taskFunctor)
{
HttpResponseMessage response = null;
try
{
response = await taskFunctor();
s_tracer.Trace(0, "Got response for {0}: {1}", operationId, response.StatusCode);
}
catch (Exception ex)
{
s_tracer.Trace(0, "Got response for {0}: {1}", operationId, ex.Message);
}
return response;
}
Какой правильный путь для make пройти лямбда?
public async Task<HttpResponseMessage> GetAsync2(string requestUri)
{
string absoluteRequestUri = requestUri;
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = await Call(
string.Format("HttpClientFacade:Get {0}", requestUri),
async() => await httpClient.GetAsync(requestUri)); <<<<<<ASYNC Lamda
return response;
}
ИЛИ
public async Task<HttpResponseMessage> GetAsync1(string requestUri)
{
string absoluteRequestUri = requestUri;
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = await Call(
string.Format("HttpClientFacade:Get {0}", requestUri),
() => httpClient.GetAsync(requestUri)); <<<<<<Lamda
return response;
}