在这个问题上找上几个小时,我希望你能帮忙。下列班级等级如下:
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(“战斗”,NewToon,30岁);将Toon.Skillset.Fight设置为30。
我希望我能解释得足够清楚,并感谢任何意见。我听说要好好地解决这个问题,但我还没有找到答案。
PS:仅仅在Toon中获得一个列表是没有帮助的,它破坏了语法。
发布于 2016-08-26 15:07:51
您可以使用反射:
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。
https://stackoverflow.com/questions/39169354
复制相似问题