我无法保存到独立存储?
我想救我的独立存储模型:我无法保存到独立存储?
var settings = IsolatedStorageSettings.ApplicationSettings;
CurrentPlaceNowModel model = new CurrentPlaceNowModel();
settings.TryGetValue<CurrentPlaceNowModel>("model", out model);
if (model == null)
{
MessageBox.Show("NULL");
settings.Add("model", new CurrentPlaceNowModel());
settings.Save();
}
else
MessageBox.Show("NOT NULL");
当我开始鸸鹋我ofcourse的“NULL”,但为什么我不断收到它,如果我关上了动车组,并启动应用程序它再次从菜单(不在Visual Studio中再次启动它)。
我不应该第二次得到“NOT NULL”吗?
我会这样做不同,并作出具体检查,看看是否存在密钥。
CurrentPlaceNowModel model;
using (var settings = IsolatedStorageSettings.ApplicationSettings)
{
if (settings.Contains("MODEL"))
{
model = settings["MODEL"] as CurrentPlaceNowModel;
}
else
{
model = new CurrentPlaceNowModel();
settings.Add("MODEL", model);
settings.Save();
}
}
这种使用IsolatedStorage的模式绝对有效。
如果CurrentPlaceNowModel
无法用DataContractSerializer进行序列化,这将不起作用的唯一原因是。这是ApplicationSettings在内部用于序列化对象的内容。
你可以通过这种方式连续测试它,看看会发生什么。
我需要使用CurrentPlaceNowModel做些什么来使其可序列化吗?也许这就是最新的错误。其唯一定义为公共类CurrentPlaceNowModel:INotifyPropertyChanged – Jason94 2012-03-16 21:48:41
根据它的作用,包含和支持它可能不可序列化。你能显示代码吗? – 2012-03-16 22:36:23
我刚才注意到你做了什么错:
if (model == null)
{
MessageBox.Show("NULL");
settings.Add("model", model);
}
这将是相当于调用settings.Add("model", null)
- 所以你怎么会希望得到一个非空值出来以后?我怀疑你想要:
CurrentPlaceNowModel model;
if (!settings.TryGetValue<CurrentPlaceNowModel>("model", out model))
{
model = new CurrentPlaceNowModel();
settings.Add("model", model);
}
“设置”究竟是什么?我可以尝试猜测,但我宁愿不必... – 2012-03-16 19:52:40
设置是var settings = IsolatedStorageSettings.ApplicationSettings; ive更新了代码 – Jason94 2012-03-16 20:07:05