Я пишу приложение, которое принимает пользовательские данные и сохраняет их локально для последующего использования. Приложение будет запускаться и останавливаться довольно часто, и я бы хотел, чтобы оно сохраняло / загружало данные при запуске / завершении приложения.
Было бы довольно просто, если бы я использовал плоские файлы, поскольку данные на самом деле не нужно защищать (они будут храниться только на этом ПК). Варианты, которые я считаю, таковы:
Плоские файлы требуют немного больше усилий для поддержки (нет встроенных классов, подобных XML), однако я раньше не использовал XML, и SQL кажется слишком сложным для этой относительно простой задачи.
Есть ли другие пути, которые стоит изучить? Если нет, то какое из них является лучшим решением?
Edit: чтобы добавить немного больше данных к проблеме, в основном, единственное, что я хотел бы сохранить, это словарь, который выглядит так
Dictionary<string, List<Account>>
, где Учетная запись - другой пользовательский тип.
Буду ли я сериализовать dict как xmlroot, а затем тип учетной записи как атрибуты?
Обновление 2:
Так что можно сериализовать словарь. Что усложняет, так это то, что значение этого dict само по себе является универсальным, представляющим собой список сложных структур данных типа Account. Каждая учетная запись довольно проста, это просто набор свойств.
Насколько я понимаю, цель здесь состоит в том, чтобы попытаться закончить с этим:
<Username1>
<Account1>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account1>
</Username1>
<Username2>
<Account1>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account1>
<Account2>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account2>
</Username2>
Как вы можете видеть, иерархия
- Имя пользователя (строка с надписью)>
- Аккаунт (каждый аккаунт в Списке)>
- Данные учетной записи (т.е. свойства класса).
Получение этого макета из Dictionary<Username, List<Account>>
- хитрый момент, и суть этого вопроса.
Существует множество ответов «как делать» здесь по поводу сериализации, и это моя вина, так как я не делал это раньше, но сейчас я ищу определенное решение.