Сохранить IEnumerable в изолированном хранилище - PullRequest
0 голосов
/ 09 сентября 2011

Я использовал изолированное хранилище прежде, чем сохранять текстовые файлы, файлы XML и изображения.Однако возможно ли сохранить переменные типа IEnumerable , используя IsolatedStorage или любой другой ресурс в Windows Phone 7 ??

Спасибо,

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Вы неправильно понимаете основные понятия. Нет такой вещи, как "сохранение переменных", вы сохраняете объекты.Ваша переменная указывает на объект, и этот объект реализует IEnumerable.На WP7, это фактический класс объекта, который определяет, может ли этот объект быть сериализован и сохранен непосредственно в ISO.Если этот фактический класс коллекции не поддерживает сериализацию, вам придется переупаковать все его текущие элементы в список / массив / словарь / стек / очередь - буквально независимо от того, что поддерживает сериализацию - и сохранить его вместо.

Как только у вас есть сериализуемая коллекция, ваш код для сохранения сокращается до чего-то столь же тривиального, как:

IsolatedStorageSettings.ApplicationSettings["blah"] = your_serializable_collection;
IsolatedStorageSettings.ApplicationSettings.Save();

и, в общем-то, все.Получение аналогично:

var items = (SomeCollection)IsolatedStorageSettings.ApplicationSettings["blah"];

, где SomeCollection может быть IEnumerable, List / Array / Dictionary / Stack / Queue - все, что вы там поместили, и все, что реализовано в фактическом классе коллекции.

Если хотите, вы можете использовать IsolatedStorageFile и записывать файлы напрямую, но если у вас нет веских оснований для этого - в этом нет никакого смысла, поскольку использование общего словаря намного проще.

В моем другом посте вынайду несколько ссылок: Как сделать изолированное хранилище в Wp7?

1 голос
/ 09 сентября 2011

Используется для сохранения / загрузки списка данных, которые можно сериализировать из коробки.В прошлый раз, когда я пытался десериализовать IEnumerable, я получил ошибки ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...