C # Структура для класса настроек - PullRequest
1 голос
/ 09 января 2012

В приложении, с которым я сейчас работаю, пользователю разрешено хранить множество настроек, разбитых на разные категории, в файлах XML.

XML может выглядеть как

<settings>
    <setting2>
        <setting3>
            <value1>foo</value1>
            <value2>bar</value2>
        </setting3>
        <value3>A list of strings</value3>
    </setting2>
    <setting4>
        <value4>An integer</value4>
    </setting4>
</settings>

Меня смущает то, как лучше структурировать класс, содержащий эту информацию, я начал с создания рекурсивного класса, содержащего список категорий и значений, и теперь я вспомнил, что в Java есть класс коллекции деревьев. и что-то подобное будет лучшим решением? Что вы, ребята, рекомендуете?

Ответы [ 2 ]

2 голосов
/ 09 января 2012

Почему бы просто не загрузить весь XML-файл в XPathDocument?Он прост в использовании и довольно быстр.

Вы можете получить доступ к индивидуальным настройкам, например:

XPathDocument xmldoc = new XPathDocument(settingsFile);
XPathNavigator nav = xmldoc.CreateNavigator();

foreach (XPathNavigator node in nav.Select("settings/setting2/setting3"))
{
   ...
}
1 голос
/ 09 января 2012

Я бы отстаивал более ОО подход.

public abstract class SettingAbstract
{
   public abstract List<Setting> Children {get;set;}
   public abstract List<object>  Values {get;set}
   public XmlNode SaveMe();
}

и после конкретной реализации для каждого типа настройки

public Setting2 : SettingAbstract
{
   //concrete implementation 
}


public Setting3 : SettingAbstract
{
  //concrete implementation
}
......
......

Примерно так.

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