Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据中获取值(不是列表或字典)_C#_Getvalue - Fatal编程技术网

C# 从数据中获取值(不是列表或字典)

C# 从数据中获取值(不是列表或字典),c#,getvalue,C#,Getvalue,对不起,我是新手,我不知道如何在标题中正确地提问。我有一个数据库: class PlayerData { public ulong id; public string name; public int kills; public int deaths; } 我想返回与请求的键对应的值 object getStats(ulong uid, string stat) { var player =

对不起,我是新手,我不知道如何在标题中正确地提问。我有一个数据库:

class PlayerData
    {
        public ulong id;
        public string name;
        public int kills;
        public int deaths;
    }
我想返回与请求的键对应的值

object getStats(ulong uid, string stat)
    {
        var player = BasePlayer.FindByID(uid);
        PlayerData data = PlayerData.Find(player);

        object value = data.TryGetValue(stat); // I know this ain't right

        return value;
    }
例如:

int kills = getStats(123456, kills); //will ask for the value of "kills" in the data. Return data.kills
统计数据可以是数据中的任何内容(id、姓名、死亡、死亡)


非常感谢

你可以接受孙茂乌关于使用switch语句的建议:

object TryGetValue(int playerId, string name)
{
    var player = GetPlayer(playerId);
    switch (name)
    {
        case "name": return name;
        case "kills": return kills;

        // Other properties
        // ...

        default: return null;
    }
}
或者您可以将数据展平:

public class Statistic
{
    public int PlayerId { get; set; }
    public string Name { get; set; }
    public object Value { get; set; }
}

然后查找值就是查找具有给定玩家id和名称的统计信息。

我想您在这里要做的是根据对象名称获取对象值?如果是这样的话,我想你可以用反思来实现这一点。您可以参考以下答案:

示例代码:

class PlayerData
{
    public ulong id;
    public string name;
    public int kills;
    public int deaths;
}

object getStats(ulong uid, string stat)
{
    var player = BasePlayer.FindByID(uid);
    PlayerData data = PlayerData.Find(player);

    object value = data.GetType().GetProperty(stat).GetValue(data, null);

    return value;
}

是吗?用开关怎么样。例如,对象TryGetValue(string stat){object returnValue=null;开关(stat){case“name”:returnValue=name;break;case“kills”:returnValue=kill;break;}returnValue;}