YamlDotNet 的 IDeserializer 可以在 IServiceCollection 中作为单例使用吗?

Can YamlDotNet's IDeserializer be used as a singleton in IServiceCollection?

我正在像这样配置 YamlDotNet 反序列化器:

static IDeserializer CreateYamlDeserializer()
{
    var deserializer = new DeserializerBuilder()
    .WithNamingConvention(CamelCaseNamingConvention.Instance)
    .WithTypeConverter(new YamlEnumMemberAttributeConverter())
    .IgnoreUnmatchedProperties()
    .Build();
    return deserializer;
}

然后我有 3 个不同的解析器,都需要通过构造函数注入反序列化器。

将反序列化器注册为单例是否安全,或者每个服务是否需要自己的实例(瞬态),因为解析器可以运行并行?

services.AddSingleton<IDeserializer>(CreateYamlDeserializer());
// or: services.AddTransient<IDeserializer>(provider => CreateYamlDeserializer());
services.AddSingleton<YamlParserA>();
services.AddSingleton<YamlParserB>();
services.AddSingleton<YamlParserC>();

Serializer 和 Deserializer 是线程安全的,可以(并且应该)用作单例。