我需要将以下YAML反序列化为我的自定义类型。 YamlAlias属性似乎已过时,因此我将其替换为YamlMember。它会反序列化以下YAML失败,但以下情况除外:


    host:
      properties:
        mem_size: 2048  MB

  
  YamlDotNet.Core.YamlException:(行:21,列:13,Idx:524)-(行:21,列:13,Idx:524):反序列化期间的异常
    ----> System.Runtime.Serialization.SerializationException:在“ Toscana.Domain.HostProperties”类型上找不到属性“ mem_size”。


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

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

最佳答案

AliasYamlMemberAttribute类的属性,不在构造函数中。现在,我不知道您的DigitalStorage类是什么样子以及string是否将成功反序列化到它中(我对此表示怀疑),但是由于您的问题是添加别名,因此您应该这样做:

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

关于c# - 如何在YamlDotNet中的YamlMember上指定别名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37639619/

10-13 06:19