我已经定义了一个名为LeaderboardScore的ParseObject子类,它是从我的云代码函数返回的IDictionary<string, object>
。如何将IDictionary <object,string>转换为Unity中的ParseObject?
我希望我可以做这样的事情在下面的例子中,但转换失败:(
失败的尝试投:
ParseCloud.CallFunctionAsync<IDictionary<string, object>>("getScore", parameters).ContinueWith(t =>
{
LeaderboardScore score = t.result as LeaderboardScore;
Debug.Log(score.get<string>("facebookId"));
}
LeaderboardScore定义:
[ParseClassName("LeaderboardScore")]
public class LeaderboardScore : ParseObject
{
[ParseFieldName("facebookId")]
public string FacebookId
{
get { return GetProperty<string>("FacebookId"); }
set { SetProperty<string>(value, "FacebookId"); }
}
[ParseFieldName("score")]
public int Score
{
get { return GetProperty<int>("Score"); }
set { SetProperty<int>(value, "Score"); }
}
}
请注意,t.Result确实有正确的信息,meani我可以通过调用诸如t.Result["facebookId"] as string
之类的东西来访问它,但是能够传递LeaderboardScore对象而不是IDictionary<string, object>
会更好。
如果有人可以在这个问题上发表看法,我将不胜感激! :)
嘿,这是一个很酷的实用功能,但遗憾的是它并没有真正与ParseObjects工作:( 我试图修改它一点点地得到它的工作,但我没有运气: http://pastebin.com/SvVgdVvL 它告诉我“NullReferenceException:对象引用未设置为对象的实例”在someObjectType.GetProperty(item.Key).SetValue(someObject,item .Value,null);'line。 我觉得必须有一个更简单的方法来解决这个问题,因为它是一个很常见的操作,但我找不到任何例子或者在文档中提到它 –
尝试使用: 'var property = someObjectType.GetProperty(item.Key);如果(property!= null) {0} }' –
如果您的字典有“facebookId”,您必须在类 –