Ищете часы сейчас по этому конкретному вопросу, надеюсь, вы сможете помочь. Этот класс иерархия Дано:Получение собственности, просто предоставив имя строки
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 to 30.
Надеюсь, я мог бы объяснить достаточно ясно, и я благодарен за любой ввод. Я слышал о Reflection, чтобы решить эту проблему красиво, но пока не нашел ответа.
PS: просто получение списка в Toon не поможет, оно разрушает синтаксис.
Кстати, у вас есть поля в классах, а не свойства. – LarsTech
Вы можете просто использовать индекс. общественного Skill это [имя строки] { прибудет { переключателя (имя) { случая "Борьба": возвращение боя; кейс «Торговля»: возвращение Торговля; case "Talk": return Talk; default: null null; } } } –
true, все же окончательная модель будет иметь около 30 полей, поэтому мне это не понравится. С учетом нескольких полей вы, конечно, правы. – Ceron