2

我有一个 Windows 8 应用程序。这个应用程序有几个自定义的类。我需要将这些实例的实例存储到独立存储中。据我了解,隔离存储已被 ApplicationDataContainer 取代。目前,我正在尝试以下方法:

public class MyClass
{
  private HttpClient service = new HttpClient();

  public string FirstName { get; set; }

  public DateTime? BirthDate { get; set; }

  public int Gender { get; set; }

  public async Task Save()
  {
    // Do stuff...
  }
}

...

MyClass myInstance = new MyInstance();
// do stuff...

try {
  ApplicationDataContainer storage = ApplicationData.Current.LocalSettings;
  if (storage != null)
  {
    if (storage.Values.ContainsKey("MyKey"))
      storage.Values["MyKey"] = myInstance;
    else
      storage.Values.Add("MyKey", myInstance);
  }
} catch (Exception ex)
{
  MessageDialog dialog = new MessageDialog("Unable to save to isolated storage");
  dialog.ShowAsync();
}

我错过了什么。为什么总是抛出异常。例外不是很具有描述性。它只是一个通用的 System.Exception 并且该消息也无济于事。有人可以帮帮我吗?

谢谢

4

2 回答 2

3

我从上面的代码中得到的异常似乎很清楚:

不支持这种类型的数据。

使用Windows运行时访问应用数据

应用设置支持Windows 运行时数据类型

请注意,没有二进制类型。如果您需要存储二进制数据,请使用应用程序文件。

您可以使用ApplicationDataCompositeValue类对必须以原子方式处理的设置进行分组(但它们仍需要支持运行时数据类型)。应用程序数据示例的场景 4涵盖了这一点。

但是,在您的特定情况下,您可能需要考虑序列化到文件并使用应用程序文件存储与设置。

于 2012-10-21T18:00:31.500 回答
0

我已经为这个场景实现了我的ModelStorage框架。

于 2012-11-18T14:29:50.237 回答