首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只需提供一个字符串名就可以获得属性

只需提供一个字符串名就可以获得属性
EN

Stack Overflow用户
提问于 2016-08-26 15:05:01
回答 1查看 75关注 0票数 4

在这个问题上找上几个小时,我希望你能帮忙。下列班级等级如下:

代码语言:javascript
复制
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等的语法。

现在的问题是:我希望能够随机增加技能,如果他们是在最喜欢的名单,这是一个列表。

所以简单地说:

代码语言:javascript
复制
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中获得一个列表是没有帮助的,它破坏了语法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 15:07:51

您可以使用反射:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39169354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档