2011-04-03 50 views
0

我尝试过在Google上搜索并在这里找不到任何好东西。任何帮助,将不胜感激。将对象保存到IsolatedStorageSettings.ApplicationSetting时出现“不支持多维数组”错误

无论我尝试将我自己的对象添加到用户设置中,应用程序都会崩溃。 Game类非常简单,有一些字符串和int属性。如果其相关我可以更新该职位的全部细节。

无论何时设置CurrentGame1的值,它都会在保存方法上出现错误“不支持多维数组”的保存方法。我需要序列化对象吗?我宁可不要的并发症,如果我能避免它

private Game CurrentGame1 
    { 
     get 
     { 
      if (IsolatedStorageSettings.ApplicationSettings.SingleOrDefault(z => z.Key == "Game1").Key == null) { 
       IsolatedStorageSettings.ApplicationSettings.Add("Game1", new Game()); 
       IsolatedStorageSettings.ApplicationSettings.Save(); 
      } 

      return IsolatedStorageSettings.ApplicationSettings["Game1"] as Game; 


     } 
     set 
     { 
      IsolatedStorageSettings.ApplicationSettings.Remove("Game1"); 
      IsolatedStorageSettings.ApplicationSettings.Add("Game1", value); 
      IsolatedStorageSettings.ApplicationSettings.Save(); 
     } 
    } 
+0

这里的相关代码是Game类 - 这是大概定义了一个不能自动序列化的多维数组的地方 – 2011-04-03 20:19:54

回答

2

您的多维阵列(FOO [X,Y])切换到数组的数组(FOO [X] [Y])代替。

1

你传递给你的任何对象都必须支持序列化(和反序列化)我猜想你定义Game的方式你没有启用它。

但我会推荐序列化(和反序列化)对象,因为IsolatdStorage在内部使用DataContractSerializer,这非常慢。
如果你可以自己更快的序列化对象,然后传递一个简单的类型到IsolatedStorageSettings,那么你应该能够获得更好的性能。