Das Setup vererben:C# generische Sammlung und Serialisierung
class Item
{
private int _value;
public Item()
{
_value = 0;
}
public int Value { get { return _value; } set { _value = value; } }
}
class ItemCollection : Collection<Item>
{
private string _name;
public ItemCollection()
{
_name = string.Empty;
}
public string Name { get {return _name;} set {_name = value;} }
}
nun versuchen, mit dem folgende Codefragment serialisiert:
ItemCollection items = new ItemCollection();
...
XmlSerializer serializer = new XmlSerializer(typeof(ItemCollection));
using (FileStream f = File.Create(fileName))
serializer.Serialize(f, items);
Nach an dem resultierenden XML-Suche ich sehe, dass die ItemCollection.Name Wert ist nicht da!
Ich denke, was passieren kann, ist, dass der Serializer die ItemCollection Typ als eine einfache Sammlung sieht somit keine andere zusätzliche Eigenschaften zu ignorieren ...
Gibt es jemand ein solches Problem haben festgestellt und eine Lösung gefunden?
Grüße,
Stecy
+1; Beachten Sie auch, dass das Verhalten von den meisten Frameworks für Datenbindungen ebenfalls geteilt wird. Es ist einfach keine gute Idee, dass Sammlungen Eigenschaften haben. Sammlungen haben Gegenstände (nur) - das ist ihre Aufgabe. –
Schön, jetzt muss ich mehrere Sammlung-abgeleitete Klassen dann wickeln ... Ich bin besorgt, dass es das Klassendiagramm zwar verkomplizieren würde ... –