You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Common/YamlDotNet/YamlDotNetExtensions.cs

30 lines
871 B

using JetBrains.Annotations;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NodeDeserializers;
namespace Common.YamlDotNet;
public static class YamlDotNetExtensions
{
public static T? DeserializeType<T>(this IDeserializer deserializer, string data)
where T : class
{
var extractor = deserializer.Deserialize<RootExtractor<T>>(data);
return extractor.RootObject;
}
public static DeserializerBuilder WithRequiredPropertyValidation(this DeserializerBuilder builder)
{
return builder
.WithNodeDeserializer(inner => new ValidatingDeserializer(inner),
s => s.InsteadOf<ObjectNodeDeserializer>());
}
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
private sealed class RootExtractor<T>
where T : class
{
public T? RootObject { get; }
}
}