Я пишу приложение, которое берет данные пользователя и сохраняет его локально для использования позже. Приложение будет запущено и остановлено довольно часто, и я бы хотел, чтобы он сохранял/загружал данные в начало/конец приложения.Лучший способ хранения данных локально в .NET (C#)
Было бы довольно просто, если бы я использовал плоские файлы, так как данные действительно не нужно защищать (он будет храниться только на этом ПК). Варианты, я считаю, таким образом:
- Плоские файлы
- XML
- SQL DB
Плоские файлы требуют немного больше усилий, чтобы поддерживать (не встроенные в классах, как с XML), однако Я раньше не использовал XML, и SQL кажется излишним для этой относительно простой задачи.
Есть ли другие возможности, которые стоит изучить? Если нет, то какое из них является лучшим решением?
Edit: Для того, чтобы добавить немного больше данных проблемы, в основном единственным, что я хотел бы сохранить это словарь, который выглядит как этот
Dictionary<string, List<Account>>
где счета является другим пользовательским типом.
Могу ли я сериализовать dict как xmlroot, а затем тип учетной записи в качестве атрибутов?
Update 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>
Как вы можете видеть heirachy является
- Имя пользователя (строка Словаре)>
- Учетная запись (каждая учетная запись в списке)>
- Данные учетной записи (т.е. свойства класса).
Получение этого макета с Dictionary<Username, List<Account>>
является сложным битом и сутью этого вопроса.
Здесь много ответов «как» на сериализацию, это моя ошибка, так как я не делал ее более ясными на раннем этапе, но теперь я ищу определённое решение.
дают больше ditails о том, какие приложения и хранятся данные, также excpected sizr –
Для сериализации словаря: http://stackoverflow.com/questions/1111724 – Cheeso