Инициализация JsonSerializerOptions с помощью конвертеров

#c# #.net-core #system.text.json

#c# #.net-ядро #system.text.json

Вопрос:

Я хотел бы создать статический экземпляр JsonSerializerOptions из System.Text.Json. У этого экземпляра должен быть пользовательский список конвертеров. Итак, моя склонность:

 static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions
{
    // Error - Converters cannot be assigned to
    Converters = new[] { new DateTimeOffsetConverter() }
};
  

В документах показано использование Add для добавления конвертера, как только экземпляр существует, например:

 var serializeOptions = new JsonSerializerOptions();
serializeOptions.Converters.Add(new DateTimeOffsetConverter());
  

Есть какие-нибудь элегантные идеи, чтобы сделать это для статического поля?

Ответ №1:

Синтаксис инициализатора C # фактически вызовет «Add», если вы просто используете фигурные скобки:

 static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions
{
    Converters = { new DateTimeOffsetConverter() }
}
  

Вы также могли бы использовать статический инициализатор:

 static readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

static MyClass(){
    serializerOptions.Converters.Add(new DateTimeOffsetConverter())
}
  

Комментарии:

1. Черт возьми! Я надеялся, что это существует. Спасибо, работает как шарм.