8using YamlDotNet.Core.Events;
9using YamlDotNet.Serialization;
26 ArgumentNullException.ThrowIfNull(type);
28 var supported = type == typeof(global::System.Version);
29 if (!supported && validate)
30 throw new NotSupportedException($
"{nameof(VersionConverter)} does not convert {type}s!");
36 public override void WriteJson(JsonWriter writer,
object value, JsonSerializer serializer)
42 else if (value is global::System.Version version)
44 writer.WriteValue(version.Semver().ToString());
48 throw new ArgumentException(
"Expected Version object!", nameof(value));
53 public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
55 ArgumentNullException.ThrowIfNull(reader);
59 if (reader.TokenType == JsonToken.Null)
62 if (reader.TokenType == JsonToken.String)
66 var v = global::System.Version.Parse((
string)reader.Value);
71 throw new JsonSerializationException($
"Error parsing version string: {reader.Value}", ex);
75 throw new JsonSerializationException(
76 $
"Unexpected token or value when parsing version. Token: {reader.TokenType}, Value: {reader.Value}");
86 public object ReadYaml(IParser parser, Type type) =>
throw new NotSupportedException(
"Deserialization not supported!");
89 public void WriteYaml(IEmitter emitter,
object value, Type type)
91 ArgumentNullException.ThrowIfNull(emitter);
96 throw new NotSupportedException(
"Null values not supported!");
98 var version = (global::System.Version)value;
JsonConverter and IYamlTypeConverter for serializing global::System.Versions in semver format.
static bool CheckSupportsType(Type type, bool validate)
Check if the VersionConverter supports (de)serializing a given type .
override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
override bool CanConvert(Type objectType)
override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
void WriteYaml(IEmitter emitter, object value, Type type)
object ReadYaml(IParser parser, Type type)