【问题标题】:Put custom Class in ApplicationDataContainer in C# (WinRT)在 C# (WinRT) 中将自定义类放入 ApplicationDataContainer
【发布时间】:2013-04-10 17:29:11
【问题描述】:

我有一个 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 并且该消息也无济于事。有人可以帮帮我吗?

谢谢

【问题讨论】:

    标签: c# windows-8 windows-runtime local-storage


    【解决方案1】:

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

    不支持这种类型的数据。

    Accessing app data with the Windows Runtime

    应用设置支持Windows Runtime data types

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

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

    但在您的具体情况下,您可能需要考虑序列化到文件并使用 app file storage 与设置。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-20
        • 2013-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多