2011-05-21 64 views
0

即時通訊新的在Facebook C#SDK和即時通訊嘗試做的Windows Phone 7的東西,但功能限制Silverlight cuz'Silverlight應該只有異步調用,我真的想這樣做:如何到達'我'在Facebook Facebook的C#SDK與WP7和Silverlight

// Using IDictionary<string, object> (.Net 3.5, .Net 4.0, WP7) 
var client = new FacebookClient(); 
var me = (IDicationary<string,object>)client.Get("me"); 
string firstName = (string)me["first_name"]; 
string lastName = (string)me["last_name"]; 
string email = (string)me["email"]; 

爲:http://facebooksdk.codeplex.com/wikipage?title=Code%20Examples&referringTitle=Documentation

,但我不能使用get方法... 生病解釋我自己更好!我要保存信息,那裏有一個解決方案:

_fbClient.GetCompleted += 
    (o, e) => 
    { 
     if (e.Error == null) 
     { 
      var result = (IDictionary<string, object>)e.GetResultData(); 
      Dispatcher.BeginInvoke(() => MyData.ItemsSource = result); 

     } 
     else 
     { 
      MessageBox.Show(e.Error.Message); 
     } 
    }; 
_fbClient.GetAsync("/me"); 

問題是有沒有辦法訪問MyData.ItemsSource,我需要訪問每個字段或通過它自己要求每個字段...任何想法?

這傢伙可能有一些方向: http://blog.prabir.me/post/Facebook-CSharp-SDK-Batch-Requests.aspx

回答

0
從Silverlight的樣品

直:

fb.GetCompleted += 
    (o, e) => 
    { 
     if (e.Error == null) 
     { 
      var result = (IDictionary<string, object>)e.GetResultData(); 
      Dispatcher.BeginInvoke(() => InfoBox.ItemsSource = result); 
     } 
     else 
     { 
      // TODO: Need to let the user know there was an error 
     } 
    }; 

    fb.GetAsync("/me"); 
+0

但這並不能解決現場問題,我如何到達每個領域? – 2011-05-21 20:25:24

+0

您應該可以通過結果對象訪問它們。嘗試按照您在原始示例中所做的相同方式進行操作。 – Jason 2011-05-21 23:49:33

1
var result = (IDictionary<string, object>)e.GetResultData(); 
var fname = (string)result["first_name"]; 
var lname = (string)result["last_name"]; 

如果它是一個JSON對象,將其轉換爲IDictionary的<字符串,對象>,如果數組將其轉換爲IList <對象>。如果字符串將其轉換爲字符串,如果數字將其轉換爲double等等。