我正在尝试使用 YamlDotNet 来帮助我解析配置文件。我研究了它的文档,发现了两种方法:
- 使用 YamlStream 的 Load() 方法,然后检查它创建的 YamlDocument 的节点;
- 为结果存储编写一系列相关类,然后使用 Deserializer 的 Deserialize() 方法自动实例化并用数据填充对象。
第一种方法不是特别优雅(代码很乱)。但它允许我在输入文件中有额外的“标签:值”对。任何额外的东西都会被忽略。我还可以在我的代码中使用逻辑来检测是否缺少任何“标签”并跳过尝试读取其值。
第二种方式很优雅,代码也很干净。但是,它会阻塞额外的“标签:值”对。此外,如果输入文件中缺少任何预期的“标签:值”对,它也会引发异常。
我正在寻找一种使用第二种方法(调用 Deserialize 方法)的方法,但即使输入文件中有额外数据或缺少某些内容,也允许它工作。
我没有找到我希望可以应用于我的对象模型成员的“可选”属性。
如果使用反序列化方法时可能有可选节点或额外未使用的节点,有人可以教育我吗?