У меня есть класс, который имеет конструктор по умолчанию, а также перегруженный конструктор, который принимает набор параметров. Эти параметры соответствуют полям объекта и назначаются при построении. На данный момент мне нужен конструктор по умолчанию для других целей, поэтому я хотел бы сохранить его, если смогу.
Моя проблема: если я удаляю конструктор по умолчанию и передаю строку JSON, объект десериализуется правильно и передает параметры конструктора без каких-либо проблем. В итоге я возвращаюсь к объекту, заполненному так, как я ожидал. Однако, как только я добавлю конструктор по умолчанию в объект, когда я вызываю JsonConvert.DeserializeObject<Result>(jsontext)
, свойства больше не заполняются.
В этот момент я попытался добавить new JsonSerializerSettings(){CheckAdditionalContent = true}
к вызову десериализации. что ничего не делало.
Еще одно примечание. параметры конструктора точно соответствуют именам полей, за исключением того, что параметры начинаются с строчной буквы. Я бы не подумал, что это будет иметь значение, поскольку, как я уже упоминал, десериализация отлично работает без конструктора по умолчанию.
Вот пример моих конструкторов:
public Result() { }
public Result(int? code, string format, Dictionary<string, string> details = null)
{
Code = code ?? ERROR_CODE;
Format = format;
if (details == null)
Details = new Dictionary<string, string>();
else
Details = details;
}