Лучший способ хранить данные локально в .NET (C #)

Я пишу приложение, которое принимает пользовательские данные и сохраняет их локально для последующего использования. Приложение будет запускаться и останавливаться довольно часто, и я бы хотел, чтобы оно сохраняло / загружало данные при запуске / завершении приложения.

Было бы довольно просто, если бы я использовал плоские файлы, так как данные не нужно защищать (они будут храниться только на этом ПК). Варианты, которые я считаю, таковы:

Плоские файлыXMLБД SQL

Для поддержки плоских файлов требуется немного больше усилий (нет встроенных классов, подобных XML), однако я раньше не использовал XML, и SQL кажется излишним для этой относительно простой задачи.

Есть ли другие пути, которые стоит изучить? Если нет, то какое из них является лучшим решением?

Изменить: чтобы добавить немного больше данных к проблеме, в основном единственное, что я хотел бы сохранить, это словарь, который выглядит следующим образом

Dictionary<string, List<Account>> 

где 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>

Как вы можете видеть, иерархия

Имя пользователя (строка из dict)>Учетная запись (каждая учетная запись в списке)>Данные учетной записи (т.е. свойства класса).

Получение этого макета изDictionary<Username, List<Account>> это хитрый бит, и суть этого вопроса.

Здесь много «как» ответов о сериализации, и это моя вина, так как я не делал это раньше, но сейчас я ищу определенное решение.

Ответы на вопрос(19)

Ваш ответ на вопрос