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