У меня есть класс, в котором есть конструктор по умолчанию, а также перегруженный конструктор, который принимает набор параметров. Эти параметры соответствуют полям объекта и назначаются при построении. На данный момент мне нужен конструктор по умолчанию для других целей, поэтому я хотел бы сохранить его, если смогу.
Моя проблема: если я удалю конструктор по умолчанию и передаю строку 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;
}