我陷入了我正在开发的C#程序中,我认为这是因为我采取了错误的方法。
你知道,我在XML文件中有这些设置,这些设置在运行时读取。对于每个设置,我想创建一个新东西。
我想我可以做到,但问题是,我如何引用这些对象?
例如:
<person>
<name>Jared</name>
<age>28</age>
</person>
<person>
<name>Nicole</name>
<age>32</age>
</person>
通常,我会做类似的事情:
Person Jared = new Person();
但我不知道XML文件中会有多少人。然后如果我想设置/获得Jared的年龄,我将不知道如何引用它。
我是否错过了如何使用OOP动态创建对象?
-Josh
答案 0 :(得分:6)
您需要创建一个List<Person>
instance,可以存储零个或多个Person
个对象。
例如:
List<Person> people = new List<Person>();
people.Add(new Person(...));
people.Add(new Person(...));
Console.WriteLine(people[1].Age);
您还可以使用for
或foreach
循环添加和阅读列表。
答案 1 :(得分:2)
Dictionary<string,Person>
可能适合这种情况。这样,当你想引用一个人时,你可以通过将这个人的名字作为关键来实现。
答案 2 :(得分:1)
你可以用Linq非常紧凑地做到这一点:
var xml = XDocument.Load("persons.xml");
var persons = // person == IEnumerable<Person>
from P in xmlDescendants("person")
select new Person() // your Person class
{
Name = P.Element("name").Value,
Age = P.Element("age").Value
};
答案 3 :(得分:0)
您需要将这些内容放入集合中,例如List<T>
:
List<Person> people = new List<Person>();
people.Add(new Person("Jared", 28));
people.Add(new Person("Nicole", 31));
有关详细信息,请参阅MSDN上Collection Classes的讨论。