如何在 YamlDotNet 的 YamlMember 上指定别名?

How to specify alias on YamlMember in YamlDotNet?

我需要将以下 YAML 反序列化为我的自定义类型。 YamlAlias 属性似乎已过时,因此我将其替换为 YamlMember。它无法反序列化以下 YAML,但出现以下异常:

    host:
      properties:
        mem_size: 2048  MB

YamlDotNet.Core.YamlException : (Line: 21, Col: 13, Idx: 524) - (Line: 21, Col: 13, Idx: 524): Exception during deserialization ----> System.Runtime.Serialization.SerializationException : Property 'mem_size' not found on type 'Toscana.Domain.HostProperties'.

public class Host
{
    public HostProperties Properties { get; set; }
}

public class HostProperties
{
    [YamlMember(typeof(DigitalStorage))]
    public string MemSize { get; set; }
}

AliasYamlMemberAttribute class 的 属性,它不在构造函数中。现在,我不知道你的 DigitalStorage class 是什么样子以及 string 是否会成功反序列化到它(我怀疑),但因为你的问题是添加别名,这就是你的做法:

public class HostProperties
{
    [YamlMember(typeof(DigitalStorage), Alias = "mem_size")]
    public string MemSize { get; set; }
}