c# - 具有自定义类的 Windows 8 应用程序漫游存储

标签 c# windows-8 microsoft-metro

我正在使用 C# 在 Windows 8 中学习编程。在此过程中,我学习了许多教程(例如 http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx),并且我正在尝试创建一个显示数据存储的简单应用程序。我能够找到的所有示例都只在漫游存储中存储简单的字符串。有没有办法在那里存储更复杂的数据?

示例:具有姓名和年龄的基本类 Person 的列表。我试图这样做:

保存数据:

roamingSettings.Values["peopleList"] = 人;

加载数据:

people = (List)roamingSettings.Values["peopleList"];

WinRT 信息:尝试序列化要写入应用程序数据存储的值时出错。 保存数据时出现错误“不支持这种类型的数据”

所以,也许您可​​以保存的只是字符串值——但我也没有在任何地方看到指定的内容。

最佳答案

是的,您可以将您的值作为集合保存到随机数据中。您的问题的解决方案是 ApplicationDataCompositeValue 类

参见 http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.applicationdatacompositevalue.aspx了解更多信息

如您所述,您正在使用 C# 进行开发,以下是您的问题的代码 我想,你有一个有两个成员的 Person 类

class person
{
int PersonID;
string PersonName
}

现在,要为这个类读取和写入值,这里是代码

首先在您的 Window 类的构造函数中,在 InitializeComponent(); 下,创建一个漫游设置对象

Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;

要写入组合,请使用以下代码

void write (Person Peopleobj)
{
Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["PersonID"] = Peopleobj.PersonID;
composite["PersonName"] = Peopleobj.PersonName;
roamingSettings.Values["classperson"] = composite;
}

要读取 Person 对象,请使用以下代码

void DisplayOutput()
    {
        ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)roamingSettings.Values["classperson"];

        if (composite == null)
        {
            // "Composite Setting: <empty>";
        }
        else
        {
        Peopleobj.PersonID = composite["PersonID"] ;
        Peopleobj.PersonName = composite["PersonName"];

        }

         }

关于c# - 具有自定义类的 Windows 8 应用程序漫游存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13473136/

相关文章:

c# - GridView重叠效果

c# - 带有四个 && 的 LINQ Where 子句

c# - 将文件扩展名与程序相关联的最佳方法

c# - 插入时防止重复

c# - Windows 8 中的自助服务终端运行常规软件(非 Windows 应用商店应用)

c# - 如何在可移植类库中使用PCLStorage?

c# - Umbraco 4.11.3 : Client side form upload (multipart/form-data) gives 404

c# - ERPTable 列被截断

c# - Windows 应用程序中不同大小的磁贴

c# - 调用 BitmapEncoder.SetPixelData 时出现 "The buffer allocated is insufficient"异常