異なるオブジェクトをIsolatedStorageに保存する必要があり、そのためにIsolatedStorageSettingsクラスを使用しています。そのオブジェクトの中には、そのように格納され、よく取り出される基本型があります。しかし、それらのいくつかはカスタムクラスインスタンスであり、それらはうまく格納されますが、それらを取得しようとすると、初期値を持つインスタンスが取得されます。 カスタムクラスインスタンスをIsolatedStorageに保存して取得するにはどうすればよいですか?SilverlightでIsolatedStorageにカスタムクラスインスタンスを保存
Phil Sandler、そうだね。しかし、私はどのようなタイプのシリアル化を使用して分離ストレージを知っていないので、私は自分のクラスをシリアル化する方法を知らない。プライベートフィールドも保存する必要があります。ここ は、カスタムクラスのコードです:
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;
}
私は私が作りたい、手動で追加するには、すべてのオブジェクトをシリアル化する必要はありません可能であれば、独立したストレージに格納するためにデフォルトで直列化可能なカスタムクラスです。
私の編集した投稿を見てください –
私の答えを更新しました。 –
返事ありがとうございます。それが解決策です。 –