Ошибка «Многомерные массивы не поддерживаются» при сохранении объекта в IsolatedStorageSettings.ApplicationSetting - PullRequest
0 голосов
/ 03 апреля 2011

Я попытался найти в Google и здесь, и не нашел ничего хорошего.Любая помощь будет оценена.

Везде, где я пытаюсь добавить свой собственный объект в настройки пользователя, приложение падает.Класс 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();
        }
    }

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

Переключите ваш многомерный массив (foo [x, y]) на массив массивов (foo [x] [y]).

1 голос
/ 04 апреля 2011

Любой объект, который вы передаете, должен поддерживать сериализацию (и десериализацию). Я полагаю, что при определении Game вы не включаете это.

Однако я бы порекомендовал сериализовать (и десериализовать) объектхотя вы сами, поскольку IsolatdStorage использует DataContractSerializer для внутреннего использования, и это очень медленно.
Если вы можете сами сериализовать объект быстрее, а затем передать простой тип в IsolatedStorageSettings, то вы сможете получить более высокую производительность.

...