Wann enthält DataContractJsonSerializer die Typinformationen?

8

Ich habe festgestellt, dass die serialisierte JSON-Zeichenfolge mit dem DataContractJsonSerializer manchmal die Typinformationen in Form von

enthält %Vor%

basierend auf meinen Beobachtungen scheint es das nur zu tun, wenn es einen Basistyp serialisiert, aber stattdessen ein bekannter Subtyp übergeben wird, was sinnvoll ist, aber ich habe keine offiziellen Dokumentationen gefunden, um dies zu bestätigen oder in der Tat, um den Serializer zu zwingen, dieses Verhalten immer dann zu zeigen, wenn es auf einen benutzerdefinierten Typ stößt.

Kann jemand bestätigen, ob meine Beobachtungen richtig sind? Besser noch, wenn Sie wissen, wie man den Serializer anweist, die Typinformationen für benutzerdefinierte Typen immer zu serialisieren, wenn dies überhaupt möglich ist?

Danke,

    
theburningmonk 03.02.2011, 14:41
quelle

1 Antwort

14

Tatsächlich können Sie den Serializer zwingen, immer konsequent __type Informationen auszugeben.

Wenn Sie den Serialisierer eigenständig verwenden, verwenden Sie constructor overload , das das Argument "alwaysEmitTypeInformation" verwendet. Pass in wahr.

Wenn Sie DataContractJsonSerializerOperationBehavior verwenden, setzen Sie dieselbe Eigenschaft für dieses Attribut auf true. Ich glaube, du kannst das auch über config machen.

Schließlich finden Sie im Abschnitt "Wann werden Typhinweisen gesendet?" unter Ссылка weitere Informationen detaillierte Erklärung.

Hoffe, das hilft!

    
krisragh MSFT 08.02.2011, 04:36
quelle

Tags und Links