对于我们的 Silverlight 项目 (SL4),我使用了一个可能包含列表 ( IList<AnotherModel>
) 的模型。根据良好实践和规则CA2227:CollectionPropertiesShouldBeReadOnly
属性没有IList
公共设置器。我们使用正在工作的 DataContractSerializer 序列化模型。但是当我尝试反序列化时,DataContractSerializer 的方法抛出了一个 SecurityException ,抱怨由于缺少公共设置器而无法设置ReadObject(Stream)
目标属性(指向该属性)。IList
由于它DataContractSerializer
是密封的,既不可扩展也不灵活,所以我目前认为没有机会添加某种额外的规则,这些规则允许反序列化ILists
使用 foreach-loop onAdd()
方法或其他一些传输集合项的方法。
我还尝试深入DataContractSerializer
研究源代码(使用 Reflector)来创建一个小分支,但看起来我必须深入挖掘,并且复制整个序列化类似乎不是一个可行的解决方案。
您是否看到另一个使用 序列化没有公共设置器的列表的机会DataContractSerializer
?
非常感谢您的想法!
更新
使用 XmlSerializer 解决。
托马斯