8
votes

System.collections vs system.collections.Objectmodel

Il semble y avoir certaines classes de collecte dans System.Collections.Objectmodel. Quelle est la différence entre les collections sous ces deux espaces de noms et dans quel scénario devrions utiliser System.collections.Objectmodel?


0 commentaires

3 Réponses :


9
votes

de MSDN :

Le système.Collections.Objectmodel Espace de noms contient des cours qui peuvent être utilisé comme collections dans l'objet modèle d'une bibliothèque réutilisable. Utilisez ceux-ci classes lorsque des propriétés ou des méthodes Renvoyer des collections.

Voir aussi La raison pour laquelle la collection, la readonlycollection et le keyedCollection ont été déplacées vers System.Collections.ObjectModel Namespace


2 commentaires

Plus un pour le lien vers 'Pourquoi' Je viens d'ouvrir un code sur lequel le System.Collections.Objectmodel.collection était utilisé et clairement qu'ils ne sont pas censés être utilisés.


Je sais que c'est vieux, mais le lien n'est pas à jour et j'étais intéressé par le contenu. Trouvé sur l'archive Internet et le partageez-le web.archive.org/web/20151030064839/http://blogs.msdn.com/b/...



0
votes

Une différence évidente est que le Système. Collections.ObjectModel Espace de noms contient générique Collections réadonnées (c'est-à-dire sans l'ajout, retirer et claire des méthodes, etc.).


0 commentaires

1
votes

System.Collections.Objectmodel cours sont utiles pour exposer vos collections au monde extérieur. (En dehors du monde, je parle du code qui n'a pas la version avec votre code.)

Utilisez donc des classes de collecte génériques dans votre code, mais enveloppez-la dans un Collection , Readonlycollection ou Observablecollection Lorsque vous souhaitez l'exposer au monde extérieur.

Pour envelopper une collection en tant que collection clé, le KeyedCollection peut être utilisé comme classe de base pour une aide.


0 commentaires