C # добавление данных в массивы - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть этот код:

public static Account[] LoadXml(string fileName) {
     Account ths = new Account();
     // load xml data
     // put data into properties/variables
     // the xml is in a structure like this:
     /*
     <accounts> 
        <account ID="test account">
         <!-- account variables here -->
        </account>
        <account ID="another test account">
         <!-- account variables here -->
        </account>
     </accounts>
     */
}

Как бы я вернул массив или коллекцию, в которой есть эти учетные записи?

Каждый <account ID="test"></account> является собственным Account.

Ответы [ 2 ]

6 голосов
/ 06 декабря 2011

Подумайте об использовании правильной сериализации xml вместо написания собственной. .NET Framework справится со всеми вашими проблемами, включая массивы, коллекции или списки.

Ваш код должен быть таким простым:

using (var stream = File.OpenRead(filename)) {
    var serializer = new XmlSerializer(typeof(AccountsDocument));
    var doc = (AccountsDocument)serializer.Deserialize(stream);
    return doc.Accounts;
}

Класс AccountsDocument:

[XmlRoot("accounts")]
public class AccountsDocument {
    [XmlElement("account")]
    public Account[] Accounts { get; set; }
}

Класс учетной записи:

public class Account {
    [XmlAttribute("ID")]
    public string Id { get; set; }

    [XmlElement("stuff")]
    public StuffType Stuff { get; set; }

    // ... and so on
}
1 голос
/ 06 декабря 2011

Вы можете сделать список:

var result = new List<Account>

затем добавьте элементы в список:

result.Add(account);

и в конце верните:

return result.ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...