现在就这个问题寻找好几个小时,希望你能提供帮助。 课程层次结构如下:
public class Toon
{
public Skillset skillset;
public Toon()
{
skillset = new Skillset();
}
}
public class Skillset
{
public Skill Fight;
public Skill Trade;
public Skill Talk;
public Skillset()
{
Fight = new Skill() { name = "Fight", value = 10 };
Trade = new Skill() { name = "Trade", value = 12 };
Talk = new Skill() { name = "Talk", value = 15 };
}
}
public class Skill
{
public string Name;
public int Value;
public int Rank
}
这是为了提供Toon.Skillset.Fight的语法等。
现在的问题是: 我希望能够随机增加技能,如果它们在收藏夹列表中,这是一个列表。
基本上:
public void setSkill(string skillname, Toon toon, int value)
{
=> get property and set it to value
}
这样
setSkill(" Fight",NewToon,30);将Toon.Skillset.Fight设置为30。
我希望我能够解释清楚,并且感谢任何意见。我听说反思可以很好地解决这个问题,但我还没有找到答案。
PS:只是在Toon中获取一个List并不会有帮助,它会破坏语法。
答案 0 :(得分:1)
你可以使用反射:
public void setSkill(string skillname, Toon toon, int value)
{
var field = typeof(Skillset).GetField(skillname);
var skill = (Skill)field.GetValue(toon.skillset);
skill.Value = value;
}
但是,这不是性能最佳的解决方案。您应该考虑使用Dictionary<string, Skill>
作为Skillset
。