首页 > 解决方案 > 从数据中获取值(不是列表或字典)

问题描述

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

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

stat 可以是数据中的任何内容(id、name、kills、deaths)

多谢!

标签: c#getvalue

解决方案


我想您在这里尝试做的是根据对象名称获取对象值?如果是这样的话,我认为你可以使用反射来实现这一点。您可以参考这个答案:Get property value from string using reflection in C#

示例代码:

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;
}

推荐阅读