У меня есть специфическая проблема с переменной в моей службе рабочего процесса. Это массив данных, полученных от службы REST, ContactContract[]
. Когда этот массив пуст, все отлично, и рабочий процесс продолжается правильно. Однако, если в массиве есть какие-либо элементы, переполнение стека происходит за пределами моей деятельности, к сожалению, я не могу точно определить конкретное место.
Итак, видя что-то подобное раньше с DataContractSerializer
, когда в графе объектов существуют циклы, я написал тестовый модуль, чтобы проверить это. Тест не пройден со следующим исключением:
System.Xaml.XamlObjectReaderException: невозможно сериализовать тип
'System.Runtime.Serialization.ExtensionDataObject. Убедитесь, что
Тип является общедоступным и либо имеет конструктор по умолчанию или экземпляр
дескриптор.
И тест:
[TestMethod]
public void ContactArraySerialize()
{
var ser = new DataContractSerializer(typeof(ContactContract[]));
var reader = new StringReader(Strings.SERIALIZED_CONTACT_LIST);
var xmlReader = XmlReader.Create(reader);
var list = ser.ReadObject(xmlReader) as ContactContract[];
var str = XamlServices.Save(list);
}
(я бы добавил xml для списка контактов, но он огромен)
Я понимаю, это потому, что в контракте реализовано IExtensibleDataObject
, чтобы немного улучшить поддержку версий.
Это не переполнение стека, которое я ожидал, но держу пари, что оно связано.
Кто-нибудь сталкивался с любой из этих проблем или у вас есть какой-либо совет?