Это продолжение How to set [DataMember] on all class membersDataContract ошибка сериализации
Так что я должен сериализовать класс с словарями и другими членами.
Я chonse в DataContext сериализации, что С.Е.
public SimpleDataGridSample()
{
if (false)
{
MyClass theclass = new MyClass();
var serializer = new DataContractSerializer(typeof(MyClass));
using (Stream fileStream = File.Open("aaa.bin", FileMode.Create))
{
XmlDictionaryWriter binaryDictionaryWriter = XmlDictionaryWriter.CreateBinaryWriter(fileStream);
serializer.WriteObject(binaryDictionaryWriter, theclass);
binaryDictionaryWriter.Flush();
}
}
else
{
MyClass theclass;
var serializer = new DataContractSerializer(typeof(MyClass));
using (Stream fileStream = File.Open("aaa.bin", FileMode.Open))
{
XmlDictionaryReaderQuotas xq = new XmlDictionaryReaderQuotas();
XmlDictionaryReader binaryDictionarReader = XmlDictionaryReader.CreateBinaryReader(fileStream, xq);
theclass = (MyClass)serializer.ReadObject(binaryDictionarReader);
}
}
}
}
и работал.
Но это была всего лишь тестовая программа. При применении в мой класс, который является более сложным, я получаю эту ошибку:
{"Index was out of range. Must be non-negative and less than the size of the collection.\r\nParameter name: index"}
Не могу понять, что индекс говорит.
Основной класс состоит из серверных элементов (также словарей и наблюдаемых списков) и других подклассов. Каждый класс отмечен [DataContract(IsReference = true)]
и каждый член отмечен [DataContext]
Thanx