【发布时间】:2019-05-01 01:05:24
【问题描述】:
这似乎与Why Async function returning System.Threading.Tasks.Task`1[System.String]? 重复,但我正在做那里的答案中建议的事情,但无济于事。
我正在运行控制台应用程序:
static void Main(string[] args)
{
...
var details = CallRestMethodAsync(url, filterObj);
Console.Write(details);
Console.ReadKey();
}
public static async Task<NotificationEvents> CallRestMethodAsync(string url, FilterPager filterPager = null)
{
...
var result = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<NotificationEvents>(result, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
}
当我在CallRestMethodAsync 的最后一行设置断点并检查result 时,我发现它确实包含预期的对象。并且 JsonConvert 不会抛出错误。
但我得到的输出是:
System.Threading.Tasks.Task`1[NotificationsHandler.NotificationEvents]
更新(2019 年 4 月 30 日,美国东部时间 11:09):
接受@Martin Brown 的回答后,我意识到我(愚蠢地)期望在控制台上看到我的类型输出的字符串化实例。这当然行不通。我需要在Main 内部做的是:
var details = (CallRestMethodAsync(url, filterObj)).Result; // to force the Task to resolve to my type
foreach (var result in details.Results) // Results being a (array) property
Console.Write(details.Results[0].EventDate); // EventDate being a prop that the Console could actually output
【问题讨论】:
-
是吗?你的方法返回一个任务?您需要等待任务才能获得结果。
-
我认为您可能会从阅读此问题中受益 + 尤其是给出的所有答案:stackoverflow.com/q/9208921/1220550
-
你希望它输出什么?
-
@MartinBrown Gosh,我刚刚意识到我期望它输出该类型的字符串化实例。我认为我使用 javascript 的时间太长了!
标签: c# async-await