通过目录中的键访问值<;system.String、system.Object>;-C#统一字典

通过目录中的键访问值<;system.String、system.Object>;-C#统一字典,c#,dictionary,firebase,unity3d,firebase-realtime-database,C#,Dictionary,Firebase,Unity3d,Firebase Realtime Database,这段代码侦听my Firebase中的任何更改,并在检测到更改时激发HandleListChange(): void SetRoomListListener() { FirebaseDatabase.DefaultInstance .GetReference ("Rooms") .ValueChanged += HandleListChange; } 我的HandleListChange()目前看起来像这样: void HandleListChange(

这段代码侦听my Firebase中的任何更改,并在检测到更改时激发HandleListChange():

void SetRoomListListener()
{
    FirebaseDatabase.DefaultInstance
        .GetReference ("Rooms")
        .ValueChanged += HandleListChange;
}
我的
HandleListChange()
目前看起来像这样:

void HandleListChange(object sender, ValueChangedEventArgs args)
{
    if (args.DatabaseError != null) {
        Debug.LogError (args.DatabaseError.Message);
        return;
    }

    // We got the new data
    foreach (DataSnapshot room in args.Snapshot.Children) 
    {
        string roomName = room.Key;

        foreach (KeyValuePair<string, Object> info in room.Value) 
        {
            Debug.Log (info);
        }
    }
}
void HandleListChange(对象发送方,ValueChangedEventArgs参数)
{
if(args.DatabaseError!=null){
Debug.LogError(args.DatabaseError.Message);
返回;
}
//我们得到了新的数据
foreach(args.Snapshot.Children中的DataSnapshot房间)
{
字符串roomName=room.Key;
foreach(房间中的KeyValuePair信息。值)
{
Debug.Log(info);
}
}
}
调试
room.Key
根据需要提供房间的名称,而
room.Value
返回某种字典->
Dictionary2[System.String,System.Object]
。我想使用键访问该字典中的值,比如说
room.value[“size”]
,但是我从foreach循环中得到了这个错误
foreach语句无法对object类型的变量进行操作,因为它不包含GetEnumerator的定义,或者无法访问
。我尝试过很多其他的方法,但都没能成功。这是我第一次同时使用目录和firebase,所以我不知道发生了什么。用于Unity的Firebase API非常小,互联网也帮不了什么忙。我想这个问题更可能发生在C方,而不是Unity或Firebase。如何使用该目录中的键访问我的值?谢谢。

从中可以看出,
DataSnapshot.Value
返回一个
对象
,该对象可能封装了不同的本机类型

如果您确定
room.Value
包含一个字典,那么您应该强制转换它,然后像C#中的任何字典一样访问它的成员:

var dictionary=(IDictionary)room.Value;
var exampleValue=字典[“大小”];
var dictionary = (IDictionary<string, object>)room.Value;
var exampleValue = dictionary["size"];