我的工作流服务中的变量有一个特殊问题。它是来自 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
以更好地支持版本控制。
这不是我预期的堆栈溢出,但我敢打赌它是相关的。
有没有人遇到过这些问题或有什么建议?