windows phone上隔离的存储安全异常



我试图坚持一些数据,但我在这里得到一个错误。
在公共部分主页类中声明隔离存储

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

onNavigatedFrom

实现
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
    {
        settings.Add("list",listBox1.ItemsSource);
        settings.Save();
    }

当我点击模拟器上的开始按钮时,我得到一个安全异常:

System.Security.SecurityException was unhandled
Message=SecurityException
我的列表框被绑定到来自xml的数据。我使用linq to xml来读取它。

我在这里读到一个类似的问题:使用隔离存储时未处理SecurityException
但我不明白这个人说的"存储类需要标记为不允许公共内部"是什么意思。
任何帮助都会很好。谢谢!

保存设置时,需要有一个明确的数据类型。在本例中,您只是保存ItemsSource,但是items source中实际是什么呢?该数据需要是公开可知的,以便序列化器可以序列化它。列表框中有什么数据?它是如何定义的?

IEnumerable(这样)也不能序列化,因为序列化器需要知道将其序列化为什么类型。

我推荐这样的代码:

    var data = (IEnumerable<MyDataType>)listBox1.ItemsSource; // perform the cast to get the correct type;
    settings.Add("list", data.ToArray()));
    settings.Save();

这样,对于序列化器来说,它是一个非常干净的数据类型。

分配给listbox1.ItemsSource的对象集合是什么?

我猜这是无法序列化的东西。SecurityException表示不能进行序列化,因为它是一个非公共类。
更改类的可访问性,并确保它可以序列化。

相关内容

  • 没有找到相关文章

最新更新