异步等待自定义类型C#

时间:2013-10-11 12:18:32

标签: c# multithreading asynchronous

我有一个模特:

public class News
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }
    public ObservableCollection<Comment> Comments { get; set; }
}

public class Comment
{
    public int CommentId {get;set;}
    public string CommentTitle{get;set;}
    public string CommentBody{get;set;}
}


public class APIData()
{

    public async Task<News> myNews()
    {
    var result = new News()
    /// GET xmlDATA

    var objComments = new ObservableCollection<Comment>();
    foreach(x in xmlData)
    {
        var objComment = new Comment();
    ////////////
        objComments.Add(objComment);
    }
    result.Comments = objComments;
    return result;
}

当我尝试使用api.myNews().Comments;访问它时,我收到错误说;

  

System.Threading.Tasks.Task不包含的定义   注释和没有扩展方法接受类型的第一个参数   可以找到System.Threading.Tasks.Task。

请告诉我。关于这个问题。

1 个答案:

答案 0 :(得分:3)

该方法将在Task返回,该Comments不包含名为await的属性。

您需要Task var news = await api.myNews(); var comments = news.Comments;

context

如果方法async不是Result,请使用var newsTask = api.myNews(); var comments = news.Result.Comments;

{{1}}