Я пытаюсь установить свойство источника изображения для Uri, которое возвращается в JSON из API.Возвращенный объект JSON имеет два свойства.
Я создал следующий вспомогательный класс для запроса API и извлечения свойства Uri:
public class GetPicUri
{
public GetPicUri()
{
}
private string _uri;
public async Task<string> Get()
{
var uri = new Uri("https://randompicture.api/random");
HttpClient getResponse = new HttpClient();
var json = await getResponse.GetStringAsync(uri);
var picture = JsonConvert.DeserializeObject<Picture>(json);
_uri = picture.Uri;
return _uri;
}
}
Это модель, используемая для десериализации JSON:
public class Picture
{
public Picture()
{
}
public string Description { get; set; }
public string Uri { get; set; }
}
Проблема в том, что я не могу получить доступ к строковому свойству класса GetPicUri:
var picUri = new GetPicUri();
string imageSource = picUri.Get();
Когда я пытаюсь это сделать, я каждый раз получаю исключение:
не может преобразовать из 'System.Threading.Tasks.Task' в 'string'
Я пробовал нарезать целую кучу разных способов, например, используя Uri какстатическая строка и имеющая метод Get как async Task
(или void
), и она просто обновляет статическую строку и вызывается из конструктора.Я попытался запустить его как метод Get для свойства.Но я не могу заставить его работать.
Так что я думаю, у меня есть два вопроса, первый из которых заключается в том, что я делаю не так здесь конкретно, и с точки зрения дизайна, какой будет правильный способ сделать это?