ユーザーデータを取得し、後で使用するためにローカルに保存するアプリケーションを作成しています。アプリケーションはかなり頻繁に開始および停止されるため、アプリケーションの開始/終了時にデータを保存/ロードしたいと考えています。
フラット ファイルを使用した場合は、データを保護する必要がないため (この PC にのみ保存されます)、かなり簡単です。したがって、私が信じるオプションは次のとおりです。
- フラットファイル
- XML
- SQL データベース
フラット ファイルを維持するにはもう少し手間がかかりますが (XML のような組み込みクラスはありません)、XML を使用したことがなく、この比較的簡単な作業には SQL がやり過ぎのように思えます。
他に検討する価値のある方法はありますか? そうでない場合、これらのうちどれが最善の解決策ですか?
編集:問題にもう少しデータを追加するために、基本的に保存したいのは、このような辞書だけです
Dictionary<string, List<Account>>
ここで、Account は別のカスタム タイプです。
dict を xmlroot としてシリアライズしてから、Account タイプを属性としてシリアライズしますか?
更新 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 の文字列) >
- アカウント (リスト内の各アカウント) >
- アカウント データ (つまり、クラス プロパティ)。
このレイアウトを a から取得するのDictionary<Username, List<Account>>はややこしい点であり、この質問の本質です。
シリアル化に関する「ハウツー」の回答がたくさんあります。これは、早い段階で明確にしなかった私のせいですが、今は明確な解決策を探しています.