【问题标题】:how saving List<object> to settings in C# uwp如何将 List<object> 保存到 C# uwp 中的设置
【发布时间】:2016-07-31 10:21:02
【问题描述】:

如何将列表保存到 C# uwp 中的设置?

为对象定义类

//class    

public class ListOfFile
        {
            public string File_DisplayName { get; set; }
            public string File_Name { get; set; }
            public string File_path { get; set; }
            public string File_Extension { get; set; }
            public StorageFile File_Storage { get; set; }
            public ImageSource File_Thumbnail { get; set; }
        }

定义加载文件的方法 方法:

//method
void loadfile()
{
    List<ListOfFile> FileBind=new List<ListOfFile>();
     var FilesInFolder = await FolderItem.GetFilesAsync();

    foreach(var FileItem in FilesInFolder)
    {
           FileBind.Add(new ListOfFile()
                        {
                            File_DisplayName = FileItem.DisplayName,
                            File_Extension = FileItem.FileType
                        ,
                            File_Name = FileItem.Name
                        ,
                            File_path = FileItem.Path
                        ,
                            File_Thumbnail = bitmapimage
                        ,
                            File_Storage =FileItem
                        });
    }

    ApplicationData.Current.LocalSettings.Values["allfiles"]=FileBind;
}

结束行错误:(

如何在“设置”中保存列表? 请帮帮我。

【问题讨论】:

    标签: c# save win-universal-app settings listobject


    【解决方案1】:

    您不应该将整个文件和位图图像存储到设置中。这不是应用程序设置功能的正确使用。最多,您可以存储文件列表及其路径,这可以让您在运行时读取内容并显示缩略图。如果您准确地提到了您想要实现的目标,那么也许我们可以为您提供更好的帮助。

    如果您绝对需要在应用中存储整个文件,您可以copy those files into your app's local storage folder 或查看integrating with OneDrive 以获得更便携的解决方案。

    【讨论】:

      【解决方案2】:

      UWP 社区工具包 - 对象存储

      我知道距最初的问题提出已经半年多了,但我希望我能早点发现 UWP 工具包,因为我有类似的情况,我想快速轻松地存储一个简单的类列表在漫游设置中漫游的设备信息。在此处发布此内容,以防万一它可能会被其他处于类似情况的人(例如 OP 和我自己)使用。

      如果您的应用程序面向 Windows 10 Build 10586 或更高版本,您可以使用 Microsoft 的 UWP Community Toolkit 中的对象存储帮助程序来存储大小对象,其中还包括列表。

      您可以通过将 Microsoft.Toolkit.Uwp NuGet 包添加到 UWP 项目来添加工具包。

      LocalObjectStorageHelper (Snippet Source) 示例

      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 会将对象作为序列化文件存储在您应用的 LocalStateRoamingState 目录中(至少,我相信如此)稍后使用 ReadFileAsync 访问。如果您的对象非常复杂并且您希望序列化为大于 8 KB 的大小,请使用此选项。

      重要警告

      使用 SaveFileAsync 存储大型/复杂对象或对象列表时要小心。每个 UWP 应用仅分配 100 KB(又名RoamingStorageQuota)。如果超过配额,数据复制将停止。

      【讨论】:

        【解决方案3】:

        不要忘记ApplicationData.LocalSettings 有限制。

        每个设置的大小最大为 8K 字节。

        你正在尝试存储

        List<T> 
        

        在设置中。 看看支持的types

        List<T> 
        

        那里不见了。看起来你不能这样做。可能只有一些转换为对象

        查看有关此类似主题的解决方案: How to store a list of objects in application settings

        更新:

        您可以尝试将 BinaryFormatter 替换为 DataContractSerializer。 这是一篇可能对您有所帮助的好文章:Saving and Loading App Data (Windows Store C# UWP / 8.1)

        【讨论】:

        • 你可以试试 DataContractSerializer。我在我的答案中添加了另一个链接,可能会对您有所帮助
        • 谢谢是好的。现在使用序列化程序保存存储文件时出现问题?
        猜你喜欢
        • 2015-03-22
        • 2020-08-02
        • 2021-04-05
        • 2021-04-26
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多