UWP 社区工具包 - 对象存储
我知道距离最初的问题已经过去了半年多,但我希望我能早点发现 UWP 工具包,因为我有类似的情况,我想快速轻松地将设备信息的简单类列表存储到在漫游设置中漫游。在此处发布此内容,以防它可能会被其他处于类似情况的人(例如 OP 和我自己)使用。
如果您的应用程序面向 Windows 10 Build 10586 或更高版本,您可以使用Microsoft UWP 社区工具包中的对象存储帮助程序来存储小型或大型对象,其中还包括列表。
可以通过将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)保存简单和复杂的对象,例如列表。
Save会将对象存储在本地/漫游设置中(取决于您选择的存储助手);这意味着它受数据约束,并且序列化对象的总大小必须小于 8 KB。
SaveFileAsync会将对象作为序列化文件存储在应用程序的LocalState或RoamingState目录中(至少,我相信如此),以便稍后使用 ReadFileAsync 访问。如果您的对象非常复杂并且您希望序列化为大于 8 KB 的大小,请使用此选项。
重要警告
使用SaveFileAsync存储大型/复杂对象或对象列表时要小心。每个 UWP 应用仅分配 100 KB(又名RoamingStorageQuota)。如果超过配额,数据复制将停止。