抱歉,标题令人困惑,所以基本上我所拥有的是一个包含许多都是同一子类的对象的类。因此,我想知道从类中不同对象中获取所有名称的最佳方法是什么。
public class Champions
{
public champ Aatrox;
public champ Ahri;
public champ Akali;
public champ Alistar;
public champ Amumu;
public champ Anivia;
public champ Annie;
public champ Aphelios;
public champ Ashe;
public champ AurelionSol;
public champ Azir;
public champ Bard;
public champ Blitzcrank;
public champ Brand;
public champ Braum;
public champ Caitlyn;
}
public class champ
{
public string version;
public string id;
public string key;
public string name;
public string title;
public string blurb;
public info info;
public string[] tags;
public string partype;
public stats stats;
}
那么获取具有所有名称的列表的好功能是什么? 列表:Aatrox,Ahri ... Caitlyn
答案 0 :(得分:0)
要访问类型的字段或属性,请使用reflection:
var names = typeof(Champions) // get System.Type instance for Champions
.GetFields() // get all fields of this type
.Select(x => x.Name) // map to names
.ToList();
答案 1 :(得分:0)
所以我开始工作了,谢谢大家的投入!
void Start()
{
url = "http://ddragon.leagueoflegends.com/cdn/10.19.1/data/en_US/champion.json";
StartCoroutine(GetChampions());
Type myType = typeof(data);
myField = myType.GetFields();
SortIntoList();
}
public void SortIntoList()
{
int i = 0;
while (i < 151)
{
string champstring = myField[i].ToString();
string[] optionschampname = champstring.Split(' ');
options.Add(optionschampname[1]);
i++;
}
}
答案 2 :(得分:0)
您已经回答过,可以使用反射。
或者您可以使用string
作为键并将Champion
这样的数据存储在Dictionary中:
Dictionary<string, Champion> dict = new Dictionary<string, Champion>()
{
{"Aatrox", new Champ()},
{"Ahri", new Champ()},
};
(由于编码惯例,我将champ
重命名为Champion
:类始终以大写开头,并且全名通常更易于使用)