2010-12-15 74 views
0

Je souhaite une propriété Dictionary<string, string> qui ne doit pas être modifiée/définie par le code externe. Pour ce faire, je peux déclarer une variable privée et sa propriété avec get accessor seulement.Comment puis-je empêcher le code externe de manipuler le contenu du dictionnaire?

par exemple. Mais dans ce cas, le code extérieur peut manipuler le 'contenu' du dictionnaire. par exemple. MYClass.MyDictionary["FirstSampleKey"] = "Replacing original value by New Value";

Je ne veux pas de code extérieur pour manipuler le contenu du dictionnaire. Comment puis-je atteindre cet objectif?

Répondre

1

Je ne crois pas qu'il existe un dictionnaire en lecture seule (ce qui serait bien car il y a une ReadOnlyCollection). Votre meilleur pari serait probablement de ne pas exposer le dictionnaire et d'exposer les propriétés/méthodes qui permettent au développeur d'obtenir les informations sans leur permettre d'accéder directement au dictionnaire.

Si c'est quelque chose que vous ferez beaucoup, vous pouvez utiliser l'implémentation ReadOnlyDictionary de quelqu'un d'autre (il y en a beaucoup là-bas si vous l'utilisez), ou vous pouvez écrire le vôtre.

1

Je dirais aussi que vous pourriez écrire une méthode pour que les développeurs recherchent leurs mots, sinon vous pourriez renvoyer une copie du dictionnaire, de cette façon le dictionnaire fonctionne comme il le fait maintenant, mais de ce fait vous auriez copier le dictionnaire chaque fois que la méthode get est appelée, ce qui peut prendre un certain temps si c'est un grand dictionnaire.