Ich habe meine public sealed class ObservableDictionary : NotifyPropertyChangedClass, INotifyCollectionChanged, IDictionary where TKey: IEquatable
Klasse geschrieben.
Es ist als [Serializable]
markiert.
Aber ich habe eine Ausnahme bekommen, als ich versucht habe, eine Instanz von ObservableDictionary
zu serialisieren.
Ausnahmemeldung:
Der Typ MS.Internal.Data.EnumerableCollectionView in der Assembly "PresentationFramework, Version=4.0.0.0, Culture=neutral," ist nicht als serialisierbar markiert mit PublicKeyToken=31bf3856ad364e35.
Aber ich habe den Typ MS.Internal.Data.EnumerableCollectionView
nie verwendet.
Wo liegt mein Fehler? Mein Code befindet sich unten:
using System;
using System.ComponentModel;
namespace RememberEmployees {
[Serializable]
public abstract class NotifyPropertyChangedClass : INotifyPropertyChanged {
protected void NotifyPropertyChanged(string propertyName) {
PropertyChangedEventHandler temp = PropertyChanged;
if (temp != null) {
temp(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
und
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Collections.Specialized;
namespace RememberEmployees {
[Serializable]
public sealed class ObservableDictionary : NotifyPropertyChangedClass,
INotifyCollectionChanged, IDictionary where TKey: IEquatable {
SortedDictionary dict;
IComparer Comparer {
get { return dict.Comparer; }
}
public ObservableDictionary() {
dict = new SortedDictionary();
IsReadOnly = false;
}
private void NotifyCollectionChanged(NotifyCollectionChangedAction action) {
NotifyCollectionChangedEventHandler temp = CollectionChanged;
if (temp != null) {
temp(this, new NotifyCollectionChangedEventArgs(action));
}
}
// Weitere Methoden hier ...
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
return dict.GetEnumerator();
}
}
}