【发布时间】:2017-01-03 07:21:53
【问题描述】:
现在在这个特定问题上寻找几个小时,我希望你能提供帮助。 给出了以下类层次结构:
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 中获取一个 List 是没有用的,它会破坏语法。
【问题讨论】:
-
顺便说一句,你的类中有字段,而不是属性。
-
您可以只使用索引器。 public Skill this[string name] { get { switch (name) { case "Fight": return Fight;案例“贸易”:返回贸易;案例“谈话”:返回谈话;默认值:返回空; } } }
-
是的,最终模型仍然会有大约 30 个字段,所以我觉得这不太合适。尽管提供了几个字段,但您当然是对的。
-
@LarsTech:啊,是的,谢谢 :)
标签: c# reflection properties