2017-04-06 26 views
1

我試圖從服務器獲取數據,並使用MessageCenter獲取數據,並使用MessageCenter

var content = await response.Content.ReadAsStringAsync(); 
Response responseData = JsonConvert.DeserializeObject<Response>(content); 
if(responseData!=null) 
    MessagingCenter.Send<RestApi, Response>(this, GET_DATA, responseData); 
else 
    MessagingCenter.Send<RestApi, Response>(this, GET_DATA, responseData); 

MainPage我已經訂閱在如下

發送回 xamarin form頁面發送回頁
public partial class MainPage : ContentPage 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 


      MessagingCenter.Subscribe<MainPage, Response>(this, RestApi.GET_DATA, (sender, arg) => { 

       Debug.WriteLine("Count of data {0}", arg.data.Count); 

      }); 


      RestApi restApi = new RestApi(); 
      restApi.getData(); 

     } 


    } 

但我從來沒有控制達到Debug.WriteLine("Count of data {0}", arg.data.Count);

回答

1

TSender參數不在SubscribePublish這樣信息之間的比賽永遠不會被你的「用戶」獲得

像這樣的工作:

MessagingCenter.Subscribe<RestApi, Response>(this, RestApi.GET_DATA, (sender, arg) => { 
    Debug.WriteLine("Count of data {0}", arg.data.Count); 
}); 
MessagingCenter.Send<RestApi, Response>(this, GET_DATA, responseData); 
+0

喔肯定。我可以使用接口作爲TSender,所以在未來,如果我的類名從RestApi改爲WebApi,我不必在任何地方改變它,只需一個想法 – Hunt

+1

@Hunt接口工作,我一直這樣做'MessagingCenter.Subscribe ( ....)'&'MessagingCenter.Send (....)'帶有「空」接口。當然,確保你傳入的'TSender'實際上實現了那個空接口;-) – SushiHangover