我正在尝试使用 YamlDotNet 来帮助我解析配置文件。我研究了它的文档并发现了两种方法:
第一种方法不是特别优雅(代码很乱)。但它允许我在输入文件中拥有额外的“标签:值”对。任何额外的内容都会被忽略。我还可以在代码中使用逻辑来检测是否缺少任何“标签”并跳过尝试读取其值。
第二种方法非常优雅,并且代码非常干净。然而,它会因为额外的“标签:值”对而窒息。此外,如果输入文件中缺少任何预期的“标签:值”对,它也会引发异常。
我正在寻找一种使用第二种方法(调用反序列化方法)的方法,但即使输入文件中存在额外数据或缺少某些内容,也允许它工作。
我没有找到我希望可以应用于对象模型成员的“可选”属性。
如果使用反序列化方法时可能有可选节点或额外未使用的节点,有人可以告诉我吗?
小智 16
第二种方法其实也是可行的。您需要执行以下操作:
[DefaultValue(1)]
public double Priority { get; set; }
Run Code Online (Sandbox Code Playgroud)
var deserializer = new DeserializerBuilder()
.IgnoreUnmatchedProperties()
.Build();
var deserialized = deserializer.Deserialize<T>(input);
Run Code Online (Sandbox Code Playgroud)
我找不到有关此配置选项的任何文档,但对我来说它按预期工作。我唯一能找到的是介绍该功能的PR 。
| 归档时间: |
|
| 查看次数: |
3777 次 |
| 最近记录: |