【发布时间】:2018-02-22 02:13:23
【问题描述】:
我正在创建一个 UWP 应用程序,简单地说,我有一个异步 void GetWeather 函数,它从 API 读取 JSON 并创建一个对象。调用 Forecast.getWeather() 函数我得到错误“非静态方法所需的对象引用”。我已经完成了我的研究,但还没有找到使用 void 方法的解决方案,因为我还不想返回一个对象。此外,如果这是不可能的(也许是一个更好的主意)我将如何返回 Object 以便它可以在整个应用程序的许多不同页面上使用,或者如果在 void 方法中创建对象值仍然可以访问?
Forecast.cs
class Forecast
{
public async void GetWeather()
{
var uri = new Uri("MY API URI HERE");
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(uri))
{
using (IHttpContent content = response.Content)
{
var json = await content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<RootObject>(json);
Debug.WriteLine("In async method");
}
}
}
}
}
主页
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Forecast.GetWeather();
}
}
天气.cs
namespace WeatherForecast
{
public class Main
{
public double temp { get; set; }
public double temp_min { get; set; }
public double temp_max { get; set; }
public double pressure { get; set; }
public double sea_level { get; set; }
public double grnd_level { get; set; }
public int humidity { get; set; }
public double temp_kf { get; set; }
}
public class Weather
{
public int id { get; set; }
public string main { get; set; }
public string description { get; set; }
public string icon { get; set; }
}
public class Clouds
{
public int all { get; set; }
}
public class Wind
{
public double speed { get; set; }
public double deg { get; set; }
}
public class Snow
{
public double __invalid_name__3h { get; set; }
}
public class Sys
{
public string pod { get; set; }
}
public class List
{
public int dt { get; set; }
public Main main { get; set; }
public List<Weather> weather { get; set; }
public Clouds clouds { get; set; }
public Wind wind { get; set; }
public Snow snow { get; set; }
public Sys sys { get; set; }
public string dt_txt { get; set; }
}
public class Coord
{
public double lat { get; set; }
public double lon { get; set; }
}
public class City
{
public int id { get; set; }
public string name { get; set; }
public Coord coord { get; set; }
public string country { get; set; }
}
public class RootObject
{
public string cod { get; set; }
public double message { get; set; }
public int cnt { get; set; }
public List<List> list { get; set; }
public City city { get; set; }
}
}
【问题讨论】:
-
感谢@John 的快速响应,但这在
)上给出了一个错误,即新表达式在类型后需要 ()、[] 或 {} -
哎呀错字。
(new Forecast()).GetWeather(); -
非常感谢,这极大地拯救了我,而且由于我是 UWP 的新手,我在 forecast.cs 中创建的
result对象是否可以在我的应用程序的不同页面上使用,或者是预测的范围。 cs ?
标签: c# json http asynchronous uwp