2015-02-23 3 views
0

В моем приложении я храню объекты (Class1) в двух списках (типа List<Class1>). Первый список используется для хранения всех объектов, добавленных в приложение, в то время как другой список фильтрует несколько объектов на основе функции фильтрации. Оба списка являются частью файла класса (Class2), который я храню в данных приложения, используя IsolatedStorage.ApplicationSettings. Когда я обращаюсь к объекту в приложении, объект извлекается из списка и при изменении любого его свойства я нажимаю кнопку «done».Объект в списке не удаляется при открытии приложения

done_event 
{ 
remove the object from the first list; 
remove it from the second list based on a simple condition (#2); 
change its properties; 
add the new object back to the first list; 
run the filtering function to add the new object to the second list if necessary; 
} 

Все отлично работает, когда я использую его после установки его на эмуляторе/устройстве, но как только я выйти из приложения и откройте его снова и изменить свойство объекта, новый объект удаляется и добавляется в первый список, однако, он не удаляется из второго списка (второй список заполняется двумя объектами вместо одного, я использовал точки останова и выяснил, что объект не удалялся из второго списка на шаге 2). Я новичок в использовании IsolatedStorage, поэтому не знаю недостатков. Пожалуйста, помогите

ответ

0

Я не знаю, как вы загружаете объекты из двух списков после перезапуска приложения, но, возможно, ApplicationSettings десериализует ваши объекты два раза для двух списков, поэтому у вас есть два разных объекта.

попробовать что-то как прокси-сервер для ApplicationSettings, как в следующем примере, чтобы оставить только один действительный список всех сохраненных class1-экземпляров:

public List<Class1> Class1List 
{ 
    get 
    { 
     if(this.class1List == null) 
     { 
      if(this.applicationSettings.Contains("class1Key")) 
       this.class1List = (List<Class1>)this.applicationSettings["class1Key"]; 
     } 

     return this.class1List; 
    } 
    set 
    { 
     this.applicationSettings["class1Key"] = value; 
     this.applicationSettings.Save(); 
    } 
} 
+0

Спасибо. Проблема заключалась в том, как данные были загружены в списки при запуске приложения (хотя я до сих пор не знаю, что именно не так). Но я исправил его, загрузив только один список из ApplicationSettings, в то время как другой список заполняется на основе функции фильтрации. Это должно повлиять на мою производительность, но, поскольку я использую короткие списки, поэтому задержка не заметна. – Sukumar