在 yamldotnet 反序列化中支持多个别名

Support for multiple aliases in yamldotnet deserialization

我有一个 YAML 文档:

name: foo
description: bar

另一个 YAML 文档为:

name: foo1
desc: bar1

我正在使用 YamlDotNet YamlMember 'Alias' 属性 来定义属性名称。但它让我只能定义一个别名。我希望 "description" 和 "desc" 反序列化为单个变量。两者不能同时出现在 YAML 文件中。有什么办法可以实现吗?

仅使用 YAML 是不可能的。锚点(及其作为别名的使用)不会在一个文件中从 YAML 文档转移到 YAML 文档,因此肯定不会从不同文件中的 YAML 文档转移。

您可以尝试在加载 YAML 后自己进行一些后处理,但您可能无法在该后处理过程中使用别名 "anchor names are a serialization detail and are discarded once composing is completed",因此您必须寻求一些独特的字符串模板或特殊别名您可以在从 YAML 加载的对象树中轻松找到的对象。