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.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)
多谢!
解决方案
我想您在这里尝试做的是根据对象名称获取对象值?如果是这样的话,我认为你可以使用反射来实现这一点。您可以参考这个答案: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;
}
推荐阅读
- c++ - 为什么可以使用右值引用作为没有生命周期问题的成员?
- flutter - 如何在 Flutter 中扭曲图标按钮
- c - 初始化大小为 2 的数组是否与分配大小为 2 的数组的指针相同?
- angular - 如何在 Angular 11 / Rxjs 中等待更新时保留可观察异步管道数组的最后一个值
- node.js - 我的反应角色代码不起作用 Discord.JS
- javascript - jquery模态调用另一个函数,从另一个函数调用时打开
- powerbi - DAX- 列查找
- javascript - javascript绑定方法参数
- powershell - 从 Function App Powershell 脚本向 Azure DevOps 进行身份验证
- c++ - 在类构造函数之前调用函数