получить значение из данных (не список или словарь) - PullRequest
0 голосов
/ 08 июня 2018

Извините, я новичок, и я не знаю, как правильно задать свой вопрос в заголовке.У меня есть база данных:

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 может быть любымв данных (имя, имя, убийства, смерти)

большое спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Я полагаю, что вы пытаетесь сделать здесь, чтобы получить базу значений объекта по имени объекта?Если это так, я думаю, вы могли бы использовать рефлексию для достижения этой цели.Вы можете сослаться на этот ответ: Получить значение свойства из строки, используя отражение в 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;
}
0 голосов
/ 08 июня 2018

Вы можете принять предложение Sun Maung Oo об использовании оператора 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; }
}

Тогда для нахождения значения нужно найтистатистика с указанным идентификатором и именем игрока.

...