Mam klasę, która ma domyślny konstruktor, a także przeciążony konstruktor, który przyjmuje zestaw parametrów. Parametry te pasują do pól na obiekcie i są przypisywane podczas budowy. W tym momencie potrzebuję domyślnego konstruktora do innych celów, więc chciałbym go zachować, jeśli mogę.
Mój problem: Jeśli usunę domyślny konstruktor i przekażę ciąg JSON, obiekt deserializuje się poprawnie i przekazuje parametry konstruktora bez żadnych problemów. Skończyło się na tym, że obiekt został zapełniony tak, jak bym się spodziewał. Jednak gdy tylko dodam domyślny konstruktor do obiektu, po wywołaniu JsonConvert.DeserializeObject<Result>(jsontext)
właściwości nie są już zapełniane.
W tym momencie próbowałem dodać new JsonSerializerSettings(){CheckAdditionalContent = true}
do wywołania deserializacji. to nic nie dało.
Kolejna uwaga. parametry contructor dokładnie odpowiadają nazwom pól, z wyjątkiem tego, że parametry zaczynają się od małej litery. Nie sądziłbym, że to ma znaczenie, ponieważ, jak wspomniałem, deserializacja działa dobrze bez domyślnego konstruktora.
Oto próbka moich konstruktorów:
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;
}