기본 생성자가있는 클래스와 매개 변수 집합을 사용하는 오버로드 된 생성자가 있습니다. 이 매개 변수는 객체의 필드와 일치하며 구성시 지정됩니다. 이 시점에서 다른 목적을 위해 기본 생성자가 필요하므로 가능하면 유지하고 싶습니다.
내 문제 : 기본 생성자를 제거하고 JSON 문자열을 전달하면 객체가 올바르게 deserialize되고 아무런 문제없이 생성자 매개 변수를 전달합니다. 예상대로 개체를 다시 채우게됩니다. 그러나 기본 생성자를 객체에 추가하자마자 JsonConvert.DeserializeObject<Result>(jsontext)
속성을 호출 하면 더 이상 채워지지 않습니다.
이 시점 new JsonSerializerSettings(){CheckAdditionalContent = true}
에서 deserialization 호출에 추가하려고했습니다 . 그것은 아무것도하지 않았다.
또 다른 메모. 구성자 매개 변수는 매개 변수가 소문자로 시작된다는 점을 제외하고 필드 이름과 정확히 일치합니다. 앞에서 언급했듯이 deserialization이 기본 생성자없이 제대로 작동하기 때문에 이것이 중요하지 않다고 생각합니다.
다음은 생성자의 샘플입니다.
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;
}