Sagen wir, ich habe eine einfache Klasse wie soXmlSerializer und Sammlung Immobilien mit eigenem Setter
[Serializeable]
public class MyClass
{
public MyClass()
{
this.MyCollection = new List<int>();
}
public List<int> MyCollection { get; private set;}
}
Wenn ich versuche, dies mit XmlSerializer Deserialisieren erhalte ich eine Fehlermeldung, dass MyCollection nur lesbar ist und nicht zugeordnet werden können. Allerdings möchte ich den Setter nicht öffentlich machen, da dies zu Problemen aller Art führen kann, wenn der Benutzer der Klasse es zuweist. FxCop warnt zu Recht dagegen: Collection properties should be read only
jedoch am unteren Rand der Seite in der Gemeinde hinzugefügter Inhalt ist dies:
XmlSerializer read-only versteht Sammlungen Sammlung Eigenschaften haben nicht Read- sein Schreiben Sie für den XmlSerializer auf Serialize und Deserialize den Inhalt korrekt. Die XmlSerializer sieht für eine Methode hinzufügen auf Sammlung namens Eigenschaften, die ICollection oder IEnumerable implementieren und verwenden, die auf die Sammlung füllen, wenn eine Instanz des Eigentümers Typ deserialisiert.
Allerdings scheint es einfach nicht der Fall zu sein (wie ich die InvalidOperationException bekomme). Was kann ich tun, um der Best Practice zu folgen, den Property-Setter privat zu halten und gleichzeitig den XmlSerializer zu verwenden?
Prost, das hat es behoben. – Ray
Was für ein schrecklicher Fehler. Frage mich, ob es in 4 behoben ist ... – Will
Dieser Fehler (Feature?) Noch in .NET 4 vorhanden :( – drumsta