Мне нужно хранить различные объекты в IsolatedStorage, и я использую класс IsolatedStorageSettings для этого.Некоторые из этих объектов являются базовыми типами, поэтому хорошо хранятся и извлекаются.Но некоторые из них являются экземплярами пользовательских классов, и они хорошо хранятся, но когда я пытаюсь получить их, я получаю экземпляры с начальными значениями.Как я могу хранить экземпляры пользовательских классов в IsolatedStorage и извлекать их?
Фил Сэндлер, я так думаю.но я не знаю, какой тип сериализации использует изолированное хранилище, поэтому я не знаю, как сделать мой класс сериализуемым.Частные поля также должны быть сохранены.Вот код пользовательского класса:
public class ExtentHistory : INotifyPropertyChanged
{
private const int Capacity = 20;
private List<Envelope> _extents;
private int _currentPosition;
public event PropertyChangedEventHandler PropertyChanged;
public int ItemsCount
{
get { return _extents.Count; }
}
public bool CanStepBack
{
get { return _currentPosition > 0; }
}
public bool CanStepForward
{
get { return _currentPosition < _extents.Count - 1; }
}
public Envelope CurrentExtent
{
get { return (_extents.Count > 0) ? _extents[_currentPosition] : null; }
}
public ExtentHistory()
{
_extents = new List<Envelope>();
_currentPosition = -1;
}
public void Add(Envelope extent)
{
if (_extents.Count > Capacity)
{
_extents.RemoveAt(0);
_currentPosition--;
}
_currentPosition++;
while (_extents.Count > _currentPosition)
{
_extents.RemoveAt(_currentPosition);
}
_extents.Add(extent);
}
public void StepBack()
{
if (CanStepBack)
{
_currentPosition--;
NotifyPropertyChanged("CurrentExtent");
}
}
public void StepForward()
{
if (CanStepForward)
{
_currentPosition++;
NotifyPropertyChanged("CurrentExtent");
}
}
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
А вот функции хранения и извлечения:
private IsolatedStorageSettings _storage;
public void Store(string key, object value)
{
if (!_storage.Contains(key))
{
_storage.Add(key, value);
}
else
{
_storage[key] = value;
}
}
public object Retrieve(string key)
{
return _storage.Contains(key) ? _storage[key] : null;
}
Я не хочу сериализовать вручную каждый объект для добавления, яхотите сделать сериализуемый пользовательский класс по умолчанию для хранения его в изолированном хранилище (если это возможно)