UWP コミュニティ ツールキット - オブジェクト ストレージ
最初の質問が出されてから半年以上経っていることはわかっていますが、デバイス情報のシンプルなクラス リストをすばやく簡単に保存したいという同様の状況があったため、UWP ツールキットについてもっと早く知っていればよかったと思います。ローミング設定でローミングします。OPや私のような同様の状況にある他の誰かに使用される可能性がある場合に備えて、これをここに投稿します。
アプリケーションが Windows 10 Build 10586 以降をターゲットにしている場合、Microsoft のUWP Community Toolkitの一部である Object Storage ヘルパーを使用して、リストを含む小さなオブジェクトまたは大きなオブジェクトを格納できます。
ツールキットを追加するには、Microsoft.Toolkit.Uwp NuGet パッケージを UWP プロジェクトに追加します。
LocalObjectStorageHelper の例 (スニペット ソース)
var helper = new LocalObjectStorageHelper();
// Read simple objects
string keySimpleObject = "simple";
if (helper.KeyExists(keySimpleObject))
{
string result = helper.Read<string>(keySimpleObject);
}
// Save simple objects
helper.Save(keySimpleObject, 47);
// Read complex/large objects
string keyLargeObject = "large";
if (await helper.FileExistsAsync(keyLargeObject))
{
var result = await helper.ReadFileAsync<MyLargeObject>(keyLargeObject);
}
// Save complex/large objects
var o = new MyLargeObject
{
...
};
await helper.SaveFileAsync(keySimpleObject, o);
RoamingObjectStorageHelperでも同じことができます。
重要事項
Save(key, object)とSaveFileAsync(key, object )を使用して、リストなどの単純なオブジェクトと複雑なオブジェクトの両方を保存できます。
保存すると、オブジェクトがローカル/ローミング設定に保存されます (選択したストレージ ヘルパーによって異なります)。これは、データの制約を受け、シリアル化されたオブジェクトの合計サイズが 8 KB 未満でなければならないことを意味します。
SaveFileAsyncは、オブジェクトをシリアル化されたファイルとしてアプリのLocalStateまたはRoamingStateディレクトリに保存し (少なくとも、私はそう信じています)、後で ReadFileAsync を使用してアクセスできるようにします。オブジェクトが非常に複雑で、8 KB を超えるサイズにシリアル化される可能性がある場合は、これを使用してください。
重要な警告
SaveFileAsyncを使用して大きな/複雑なオブジェクトまたはオブジェクトのリストを格納する場合は注意してください。各 UWP アプリには 100 KB のみが割り当てられます (別名 RoamingStorageQuota )。クォータを超えると、データの複製が停止します。