Mes besoins:Liste, SortedList, Dictionnaire pour stocker des objets par clé et les sérialiser?
- je dois stocker une collection d'objets dans une classe,
- objets
doivent être accessibles par leur clé (qui sera chaîne unique), recherche/supprimer/remplacer doit fonctionner comme ce
MyClass somethingNew = new MyClass(); // set someproperties on somethingNew somethingNew.Id = "FooBar"; // theOtherObject already contains an object with the key "FooBar" theOtherObject.Members[somethingNew.Id] = somethingNew;
lorsque nouvel objet est inséré aucune sorte ne doit se produire,
- la propriété (collection) doit être sérialisable nous XML DataContractSerializer.
Alors, que choisir pour la propriété Membres? Je suppose que la liste et SortedList sont hors de question, donc je suis sur le point d'utiliser générique
Dictionary<string, MyClass>.
Est-ce la bonne décision? Supporte-t-il la sérialisation?
-1 KeyedCollection est une classe abstraite qui ne peut pas être directement instanciée. C'est également pour un cas spécifique lorsque la clé est directement intégrée dans l'objet Value (ce qui, dans ce cas, n'est pas vrai). –
Oui, je suis conscient que c'est une classe abstraite. Mais il fait ses recherches basées sur 'somethingNew.Id' de sa' MyClass'. Et si cette collection est utilisée dans de nombreux endroits de l'application, il n'y a rien de mal à créer une classe de collection dédiée 'MyClassCollection' pour gérer l'accès aux collections de ces objets. –
Vous avez raison. J'ai lu le code incorrectement. Vous pouvez mettre à jour votre réponse pour inclure le fait que l'OP doit créer un type de collection personnalisé dérivé de KeyedCollection. –