facebook-sdk-net中的变量问题

时间:2014-08-29 11:00:57

标签: c# facebook facebook-graph-api windows-phone-7 windows-phone-8

我收到了这一行的消息,我使用了本地变量" name",这是没有设置的。

string firstname = name;

但是我在这一行设置了变量名

name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);

我的错误在哪里?我如何设置从名称到名字的值?

private void LoadUserInfo()
{
    string name;
    var fb = new FacebookClient(App.AccessToken);

    fb.GetCompleted += (o, e) =>
    {
        name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
    });

    string firstname = name;

    fb.GetTaskAsync("me");
}

public void LoadUserInfo()
 {
     using (FacebookDataContext db = new FacebookDataContext(DBConnectionstring))
     {
         FacebookClient fb = new FacebookClient(App.AccessToken);
         fb.GetCompleted += (o, e) =>
         {
             var result = (IDictionary<string, object>)e.GetResultData();
             var FBName = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
             db._fbcontacts.InsertOnSubmit(new FacebookContactsList { Name = FBName }); 
             db.SubmitChanges();
         };
         fb.GetTaskAsync("me");
     }
 }

1 个答案:

答案 0 :(得分:0)

以下行位于GetCompleted事件的事件处理程序块中。因此,它将在事件发生时执行,该事件发生在fb.GetTaskAsync("me")调用并完成之后:

name = String.Format("{0} {1}", .......);

这意味着,在您尝试使用name变量的那一刻,它尚未设置:

string firstname = name;

我对firstname稍后您将采取的操作一无所知..事情是,您需要在设置 firstname之后设置name 例如,在同一个事件处理程序块中:

fb.GetCompleted += (o, e) =>
{
    name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
    string firstname = name;
    ....
});

更新:

 FacebookClient fb = new FacebookClient(App.AccessToken);
 fb.GetCompleted += (o, e) =>
 {
     var result = (IDictionary<string, object>)e.GetResultData();
     var FBName = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
     using (FacebookDataContext db = new FacebookDataContext(DBConnectionstring))
     {
        db._fbcontacts.InsertOnSubmit(new FacebookContactsList { Name = FBName }); 
        db.SubmitChanges();
     }
 };
 fb.GetTaskAsync("me");