Wie ignoriere ich während der Deserialisierung eine Eigenschaft? In meinem Fall möchte ich die Eigenschaft FullName
überhaupt nicht initialisiert bekommen. Ich bin nicht auf der Suche nach [XMLIgnore]
Lösungen - denke, dass es ein Szenario ist, in dem ich keinen Zugriff habe, um die Klasse zu ändern.C# Xml Deserialize, Daten in XML ignorieren
Hier ist meine Klasse:
public class Person
{
public int Id { get; set; }
public string FullName { get; set; }
}
Hier ist, wie ich die Initialisierung:
Person p1 = new Person() { Id = 1, FullName = "P1" };
Person p2 = new Person() { Id = 2, FullName = "P2" };
List<Person> persons = new List<Person> { p, q }; //this object is xml serialized.
Und hier ist mein XML: (ich es aber die XML-Serialisierung bekam)
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Person>
<Id>1</Id>
<FullName>P1</FullName>
</Person>
<Person>
<Id>2</Id>
<FullName>P2</FullName>
</Person>
</ArrayOfPerson>
Eine sehr brutale Lösung (wenn Sie nicht zu viele Eigenschaften in Ihrem tatsächlichen Code haben) wäre, eine neue _temporary_ Klasse zu erstellen, z. Person2, mit allen Feldern außer demjenigen, den Sie ignorieren möchten. Verwenden Sie das zum Serialisieren. Während der Deserialisierung können Sie immer noch die ursprüngliche Klasse verwenden. Es wird nur den ignorierten Wert als null belassen. Wenn der Name der Klasse jedoch für Sie im XML wichtig ist, ist dieser Vorschlag nicht hilfreich. –
Dies könnte Ihnen helfen, wenn mein erster Vorschlag nicht. [Ignoriere eine Eigenschaft während der XML-Serialisierung, aber nicht während der Deserialisierung] (http://stackoverflow.com/a/18242538/6741868). Ein anderes Beispiel für die gleiche Override-Methode ist [Ignore a property beim Serialisieren nach XML] (http://stackoverflow.com/a/23121696/6741868) –
danke für Ihre Eingaben, aber die XMLAttributeOverrides hilft, wenn der Elementname in der XML ist anders als der Klasseneigenschaftsname. – Sekhar