Я пытаюсь сериализовать пользовательский тип, который содержит словарь среди других членов. Типы, связанные с ключом и значением словаря, являются интерфейсами, которые реализованы.
Словарь выглядит как
Dictionary<ITypeA, ITypeA>
TypeA implements ITypeA,
SubTypeOfA inherits from TypeA
SubTypeOfB inherits from SubTypeOfA
псевдокод выглядит примерно так:
List<Type> knownTypes = new List<Type>() {
typeof(TypeA),
typeof(SubTypeOfA),
typeof(SubTypeOfB)
};
DataContractSerializer serializer =
new DataContractSerializer(typeof(DataHolder), knownTypes);
using (FileStream fs = new FileStream(completeFilePath, FileMode.Create))
{
serializer.WriteObject(fs, templateData);
success = true;
}
Я получаю StackOverflowException, когда вызывается WriteObject (), я не знаю, что вызывает это.
Все классы в иерархии декорированы с помощью [DataContract], а члены, подлежащие сериализации, обесценены с помощью [DataMember].
Любая помощь будет оценена.