Wie kann Newtonsoft Json gezwungen werden, alle Eigenschaften zu serialisieren? (Seltsames Verhalten mit der Eigenschaft "Angegeben")

Programmierkollegen, ich habe in Newtonsoft.Json ein seltsames Verhalten festgestellt.

Wenn ich versuche, ein Objekt wie folgt zu serialisieren:

public class DMSDocWorkflowI
{
    [JsonProperty("DMSDocWorkflowIResult")]
    public bool DMSDocWorkflowIResult { get; set; }

    [JsonProperty("DMSDocWorkflowIResultSpecified")]
    public bool DMSDocWorkflowIResultSpecified { get; set; }
}

Mit diesem einfachen Aufruf ohne benutzerdefinierte Konverter / Binder / Vertragsauflöser:

var testObject = new DMSDocWorkflowI();
var json = JsonConvert.SerializeObject(testObject, Formatting.Indented);

oder sogar mitJToken.FromObject(...) Ich bekomme immer nur eine Eigenschaft:

{
   "DMSDocWorkflowIResultSpecified": false
}

Wenn ich den Trace-Writer anhänge, fängt er nur Folgendes ab:

[0]: "2016-08-30T11:06:27.779 Info Started serializing *****DMSDocWorkflowI. Path ''."
[1]: "2016-08-30T11:06:27.779 Verbose IsSpecified result for property 'DMSDocWorkflowIResult' on *****DMSDocWorkflowI: False. Path ''."
[2]: "2016-08-30T11:06:27.779 Info Finished serializing *****.DMSDocWorkflowI. Path ''."
[3]: "2016-08-30T11:06:27.780 Verbose Serialized JSON: \r\n{\r\n  \"DMSDocWorkflowIResultSpecified\": false\r\n}"

So scheint es, dass Newtonsoft.Json diese "Specified" -Eigenschaft etwas magisch behandelt. Kann ich das ausschalten? Ich benötige beide Eigenschaften in resultierendem JSON mit genau diesen Namen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage