Один из классов, которые у меня есть в моем проекте, называемом AC
, имеет свойство Address
, имеющее тип IPEndPoint
. Этот тип, а также IPAddress
, по всей видимости, несовместимы с сериализацией JSON по умолчанию. Поскольку мне нужно было сериализовать мой класс, я реализовал два настраиваемых преобразователя: IPAddressConverter
и IPEndPointConverter
. Чтобы заставить Newtonsoft использовать эти два конвертера, я сделал этот класс:
public sealed class CustomSettings : JsonSerializerSettings
{
public CustomSettings() : base()
{
this.Converters.Add(new IPAddressConverter());
this.Converters.Add(new IPEndPointConverter());
this.TypeNameHandling = TypeNameHandling.Auto;
}
}
.. который я использую в моем Main
так:
Newtonsoft.Json.JsonConvert.DefaultSettings = () => new CustomSettings();
Теперь я пытаюсь добавить API в свою программу. Я создал проект .Net Core Web API и успешно интегрировал его в свою программу. Однако возникли проблемы, когда я попытался написать метод POST, который потребовал экземпляр AC
в форме JSON из тела запроса. Сериализатор не смог преобразовать IPEndPoint
, и поэтому значение AC
всегда было null
.
Информация о конфигурации API. Core Core довольно редкая. Может ли кто-нибудь сказать мне, как я могу передать те же настройки в сериализатор MVC?
ИЗМЕНИТЬ
Я нашел способ (вроде). Оказывается, вы можете установить параметры JSON в методе ConfigureServices
.
Я попытался изменить параметры сериализатора MVC так же, как и для остальной части моей программы, выполнив следующие действия:
services.AddMvc().AddJsonOptions(options => options.SerializerSettings = new CustomSettings());
Однако это не работает, поскольку options.SerializerSettings
читается только.
Я мог бы передавать конвертеры один за другим, но я бы предпочел, чтобы все они управлялись из одного места (класс CustomSettings
). Возможно ли это?