Having a custom EnumConverter that should return the default enum isn't working as I expect.
Enum :
public enum MyEnum
{
Unknonw = 0,
FirstEnum = 1,
SecondEnum = 2
}
The converter :
public override ContractType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
switch (reader.TokenType)
{
case JsonTokenType.String:
{
var value = reader.GetString();
if (Enum.TryParse(typeToConvert, value, out var result))
{
return (MyEnum)result;
}
return MyEnum.Unknown;
}
case JsonTokenType.Number:
{
var value = reader.GetInt32();
MyEnum myEnum = (MyEnum)value;
if (Enum.TryParse(typeToConvert, myEnum.ToString(), out var result))
{
return (MyEnum)result;
}
return MyEnum.Unknown;
}
default:
return MyEnum.Unknown;
}
}
}
If I use this for example in my JSON resuest :
{
"myType": 7
}
It doesn't return MyEnym.Unknown, why is that? What am I missing?
If I use this for example in my JSON request :
{
"myType": "Random"
}
It return's MyEnum.Unknown.
And if I use this for example :
{
"myType": 1
}
It return's MyEnum.FirstEnum. So this part.