如何将自定义转换器应用于 YamlDotNet 中的属性

sti*_*til 3 c# yaml deserialization yamldotnet

我正在将配置文件从 .json 移植到 .yaml 格式。例如,在 Newtonsoft.Json 中,我能够将属性应用于需要自定义转换器的属性

[JsonConverter(typeof(CustomIdConverter))]
public IList<CustomID> Users { get; set; }
Run Code Online (Sandbox Code Playgroud)

我如何使用YamlDotNet做同样的事情?

我知道转换器应该实现IYamlTypeConverter接口,但是我如何将此转换器应用于确切的属性?

Ant*_*bry 5

尽管这将是一个有用的功能,但不支持这一点。支持的是将转换器与类型相关联。作为解决方法,您可以为您的属性创建自定义类型并将转换器与其关联:

public interface ICustomIDList : IList<CustomID> {}

public class CustomIDListConverter : IYamlTypeConverter { /* ... */ }

var deserializer = new DeserializerBuilder()
   .WithTypeConverter(new CustomIDListConverter())
   .Build();
Run Code Online (Sandbox Code Playgroud)