Настройки приложения изолированного хранилища не сохраняются после выхода из приложения

У меня большая проблема с использованием изолированного хранилища WP7 и настроек приложения. Я использовал в качестве основы код из 101 приложения Адама Натана для Windows Phone 7. Том 1.

У меня есть страница настроек, где значения можно изменять, и пока приложение все еще работает, они остаются активными, и все работает отлично. Однако, как только приложение закрывается на моем телефоне разработчика, они теряются, и приложение перезапускается с настройками по умолчанию.

Я понятия не имею, почему эти значения не сохраняются. Любая помощь будет принята с благодарностью.

Вот код, который у меня есть, из новой книги Адама Натана. Я отправил ему сообщение в твиттере, и он сказал, что это связано с типом данных, который нельзя сериализовать. Я изучил это, но использую только значения double и bool.

public class Setting<T>
{
    string name;
    T value;
    T defaultValue;
    bool hasValue;

    public Setting(string name, T defaultValue)
    {
        this.name = name;
        this.defaultValue = defaultValue;
    }

    public T Value
    {
        get
        {
            //checked for cached value
            if (!this.hasValue)
            {
                //try to get value from isolated storage
                if (IsolatedStorageSettings.ApplicationSettings.TryGetValue(this.name, out this.value))
                {
                    //not set yet
                    this.value = this.defaultValue;
                    IsolatedStorageSettings.ApplicationSettings[this.name] = this.value;
                }

                this.hasValue = true;
            }

            return this.value;
        }

        set
        {
            //save value to isolated storage
            IsolatedStorageSettings.ApplicationSettings[this.name] = value;
            this.value = value;
            this.hasValue = true;
        }
    }

    public T DefaultValue
    {
        get { return this.defaultValue; }
    }

    //clear cached value;
    public void ForceRefresh()
    {
        this.hasValue = false;
    }
}

Дальнейшее развитие:

Я получаю эту ошибку при выходе из приложения:

Первое случайное исключение типа 'System.IO.IsolatedStorage. IsolatedStorageException 'произошла в mscorlib.dll


ОБНАРУЖЕНА ОШИБКА: Я идиот и пропустил один восклицательный знак! из части trygetvalue.

5
задан James Mundy 20 May 2011 в 15:22
поделиться