In C#, wie kann ich XmlSerializer veranlassen, eine Eigenschaft während der Serialisierung, aber nicht während der Deserialisierung zu ignorieren? (? Oder wie soll ich tun das gleiche mit Json.net)Ignorieren einer Eigenschaft während der XML-Serialisierung, aber nicht während der Deserialisierung
Um eine Eigenschaft entfernt, serialisiert zu verhindern, können Sie das XmlIgnore
Attribut hinzufügen:
[XmlIgnore]
public int FooBar {get;set;}
Dies bewirkt, dass die <FooBar>
Tag während weggelassen werden Serialisierung.
Dies bedeutet jedoch auch, dass das Tag <FooBar>
während der Deserialisierung ignoriert wird.
In meinem Fall, ich akzeptiere ein Array von Elementen von Benutzer in der Anfrage, und für jedes Element Benutzer kann eine Aktion Eigenschaft angeben, wenn sie das Element hinzufügen, ändern oder löschen möchten. Ich möchte für GET-Listenaufrufe dasselbe Modellobjekt verwenden und diese Aktionseigenschaft nicht zurückgeben. Ich erwarte, dass dies ein ziemlich häufiger Fall wäre.
Ein weiterer Anwendungsfall: sagen Sie
public class Circle
{
public double Radius { get; set; }
}
und Sie ändern, um sie hinzuzufügen einen Durchmesser Eigenschaft
public class Circle2
{
public double Diameter { get; set; }
public double Radius { get { return Diameter/2; } set { Diameter = value*2; } }
}
Möglicherweise möchten Sie serialisiert nur den Durchmesser, aber immer noch einen Kreis bezwecken sein Deserialisieren von XML-Dateien im alten Format, die nur den Radius enthalten.
ich meine Forschung getan und etwas nicht finden, daher ist diese Frage
Lösung: dachte ich die Lösung aus. Ich kann eine ShouldSerialize Eigenschaft hinzufügen, die immer false zurück, Details bei this MSDN documentation
(diese Lösung als eine tatsächliche Antwort gegeben werden könnte, wenn diese Frage erneut geöffnet wird)
Wie können Sie es nicht serialisieren, aber erwarten, dass es es deserialisiert? – Justin
Geben Sie einer Eigenschaft einen Standardwert? Wie sonst würden Sie eine Eigenschaft während der Deserialisierung "nicht ignorieren"? – dasblinkenlight
Ich bin zu faul, um die Dokumente jetzt zu durchsuchen, aber wenn Sie durch die Dokumentation von json.NET schauen, garantiere ich, dass es Beispiele gibt, die Ihnen zeigen, wie man eine Eigenschaft während der Serialisierung/Deserialisierung ignoriert. – evanmcdonnal