此方法生成var结果:
private void GraphApi_Facebook()
{
var fb = new FacebookClient(_accessToken);
fb.GetCompleted += (o, e) =>
{ if (e.Error != null)
{
return;
}
var result = (IDictionary<string, object>)e.GetResultData();
SaveDataToClass(result); // >>> This is wrong
}
}
如何将结果传递给SaveDataToClass()?
private async void SaveDataToClass()
{
CoreDispatcher dispatcher = CoreWindow.GetForCurrentThread().Dispatcher;
await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => {
singletonInstance.facebook_name = (string)result["name"];
singletonInstance.facebook_firstname = (string)result["first_name"];
});
}
答案 0 :(得分:3)
var
不是类型。根据您的代码,结果类型为IDictionary<string, object>
,因此您只需在类型{{1}的方法中添加参数}}
答案 1 :(得分:1)
您必须将SaveDataToClass
方法的签名更改为以下内容:
private async void SaveDataToClass(IDictionary<string, object> dictionary)
然后你可以传递result
,因为它的类型是IDictionary<string, object>
。
注意强>
正如Selman22所指出的那样,var
不是一种类型。这是一种语法糖。编译代码时,结果类型为IDictionary<string, object>
。
而不是写这个:
IDictionary<string, object> result = (IDictionary<string, object>)e.GetResultData();
你有能力写这个:
var result = (IDictionary<string, object>)e.GetResultData();
在编译期间,result
的类型将由您指定的值的类型推断。
答案 2 :(得分:0)
更改SaveDataToClass的签名以接受&#39;结果的类型&#39;:
private async void SaveDataToClass(IDictionary<string, object> result)
{
. . .
}