如何创建动态数量的对象?设计模式的帮助

时间:2010-09-17 17:30:26

标签: c# .net xml design-patterns

我陷入了我正在开发的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

4 个答案:

答案 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);

您还可以使用forforeach循环添加和阅读列表。

答案 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的讨论。