Tôi có một lớp có một hàm tạo mặc định và cũng là một hàm tạo quá tải có trong một tập các tham số. Các tham số này khớp với các trường trên đối tượng và được chỉ định khi xây dựng. Tại thời điểm này tôi cần hàm tạo mặc định cho các mục đích khác vì vậy tôi muốn giữ nó nếu tôi có thể.
Vấn đề của tôi: Nếu tôi loại bỏ hàm tạo mặc định và truyền vào chuỗi JSON, đối tượng sẽ giải tuần tự hóa một cách chính xác và chuyển vào các tham số của hàm tạo mà không có bất kỳ vấn đề nào. Tôi cuối cùng đã lấy lại được đối tượng cư trú theo cách tôi mong đợi. Tuy nhiên, ngay khi tôi thêm hàm tạo mặc định vào đối tượng, khi tôi gọi JsonConvert.DeserializeObject<Result>(jsontext)
các thuộc tính không còn được điền.
Tại thời điểm này tôi đã cố gắng thêm new JsonSerializerSettings(){CheckAdditionalContent = true}
vào cuộc gọi khử lưu huỳnh. điều đó không làm gì cả
Một lưu ý khác. các tham số của bộ điều khiển khớp chính xác với tên của các trường ngoại trừ các tham số được bắt đầu bằng một chữ cái viết thường. Tôi sẽ không nghĩ rằng điều này sẽ quan trọng vì, như tôi đã đề cập, quá trình khử lưu huỳnh hoạt động tốt mà không có hàm tạo mặc định.
Đây là một mẫu của các nhà xây dựng của tôi:
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;
}