TL;DR Я настроил JsonConverter для типа в моем приложении ASP.NET Core, и хотя метод Read правильно вызывается, когда при получении данных метод Write не вызывается при записи данных.
Я создал JsonConverter для пользовательского тип, который я разработал (реализация шаблона перечисления):
Код: Выделить всё
class MyEnum
{
private MyEnum(int code, string description)
{
Code = code;
Description = description;
}
public int Code { get; private set; }
public string Description { get; private set; }
public static MyEnum First = new(1, "First");
public static MyEnum Second = new(2, "Second");
public static Parse(string description) => description switch
{
"First" => MyEnum.First,
"Second" => MyEnum.Second,
}
public override string ToString() => Description;
}
Код: Выделить всё
public class MyEnumConverter : JsonConverter
{
public override T? Read(ref Utf8JsonReader reader, Type _, JsonSerializerOptions _) => MyEnum.Parse(reader.GetString());
public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions _)
=> writer.WriteStringValue(value.ToString());
}
Код: Выделить всё
builder.Services
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.Converters.Add(
new MyEnumConverter());
});
Код: Выделить всё
{ "code": 1, "description": "First" }
Это кстати, сигнатура метода контроллера:
Код: Выделить всё
public class Dto { public MyEnum Foo { get; set; } }
public async Task Create(
[FromBody] Dto dto);
Подробнее здесь: https://stackoverflow.com/questions/783 ... ing-called