我有一个相当大的对象图,我已经通过DataContractSerializer序列化到一个文件。我现在想把这些文件列表提供给用户选择。在这个列表中,我想显示一些关于该文件的细节,这些是根对象的属性。我不想将整个图加载到内存中,因为我只想显示根节点的属性。你可以控制DataContractSerializer反序列化的深度吗?
有谁知道一种方法来控制反序列化的“深度”,以便我可以从文件中拉出根对象并跳过子节点?我宁愿避免将该文件视为原始XML,因为我没有在其他任何地方进行任何原始XML操作,而这将是我必须保持同步的另一个代码分支。
我现在唯一的想法是创建一个兼容的“摘要”对象,其中只包含我感兴趣的属性,而不包含任何子项,并将该文件反序列化为该文件。这应该跳过子节点,因为它们与摘要对象无关。
有没有更好的方法来实现这个目标?
更新/澄清:属性不是我正在寻找的答案。首先,当对象第一次序列化时,它们将防止“额外”属性在文件中结束。
其次,它们比我想要做的更持久。最终,我确实想对整个文件进行反序列化,而不是在这个时候。我正试图显示用户可以选择进行导入的文件摘要列表。在进口过程中,我需要所有的孩子和孙子。这只是在步骤1中矫枉过正。这些是可能的大文件,因此完全反序列化它们中的几个,以便我可以显示它们的标题信息不会起作用。
希望能够澄清关于原始问题的任何混淆。