Я переопределяю метод в библиотеке базового класса. Однако внутри моей переопределенной реализации я использую новый HttpClient, который основан на методах async. Поэтому я должен пометить свой метод как async, а это значит, что мне нужно изменить возвращаемый параметр метода из строки в Task. Однако компилятор сообщает об ошибке: "Тип возврата должен быть" string "для соответствия переопределенному элементу..."
public class BaseClass
{
public virtual string GetName()
{
...
}
}
public class MyClass : BaseClass
{
public override async Task<string> GetName()
{
HttpClient httpClient = new HttpClient();
var response = await httpClient.GetAsync("");
if (response.IsSuccessStatusCode)
{
var responseContent = response.Content;
return await responseContent.ReadAsStringAsync();
}
return null;
}
}
Конечно, очевидным решением было бы изменить возвращаемый тип GetName() в BaseClass на Task <string> , но я не контролирую BaseClass, поскольку это внешняя библиотека;
Мое текущее решение - использовать классы HttpClient синхронно, т.е. изменить MyClass следующим образом:
public class MyClass : BaseClass
{
public override string GetName()
{
HttpClient httpClient = new HttpClient();
var response = httpClient.GetAsync("");
if (response.Result.IsSuccessStatusCode)
{
var responseContent = response.Result.Content;
return responseContent.ReadAsStringAsync()
.Result;
}
return null;
}
}
Есть ли другой способ сделать это?