Lets sagen, dass wir eine derivided Klasse „SerializableLabel“ von der Basisklasse „System.Windows.Controls haben..net XmlSerializer, ignorieren Eigenschaften Basisklasse
[XmlRoot("SerializableLabel")]
public class SerializableLabel : Label
{
public string foo = "bar";
}
ich diese Klasse serialisiert werden möchten, aber alle ignorieren . der Eigenschaften in der übergeordneten Klasse im Idealfall würde die xml etwas wie folgt aussehen:?
<SerializableLable>
<foo>bar</foo>
</SerializableLable>
Wie dies am besten erreicht ist
Mein erster Versuch verwendet, um den typischen XmlSerializer Ansatz:
XmlSerializer s = new XmlSerializer(typeof(SerializableLabel));
TextWriter w = new StreamWriter("test.xml");
s.Serialize(w, lbl);
w.Close();
Aber das wirft eine Ausnahme, weil der Serializer versucht, eine Basisklasse Eigenschaft serialisiert werden, das ist eine Schnittstelle (ICommand Command).
Danke für Ihre Antworten! Es scheint so, als würde ich das Liskow-Substitutionsprinzip verletzen. Vielleicht liegt es daran, dass ich eifrig darauf bedacht bin, Eigenschaften in der Basisklasse zu ignorieren. Die Wahrheit ist, ich möchte nur Eigenschaften ignorieren, die die Serialisierung des Etiketts verhindern - zB diejenigen, deren Typ eine Schnittstelle ist. – ccunni