Lors de l'utilisation de classes personnalisées avec des propriétés en lecture seule de type Liste ou similaires (ObservableCollection), il est toujours possible d'obtenir la variable et d'appeler une méthode Add() pour modifier le contenu. Existe-t-il un moyen d'arrêter ceci (sans créer de grandes surcharges de la classe List) sur l'accès 'externe', ou est-il préférable de traiter les listes d'une autre manière si elles ne doivent pas être modifiées en dehors de leur classe?Types de liste ignorant les propriétés ReadOnly?
1
A
Répondre
5
Lorsque vous décalez un type de référence en lecture seule, seule la référence à l'objet est en lecture seule. L'objet lui-même peut encore être modifié. Dans le cas d'une liste, vous pouvez utiliser ReadOnlyCollection pour exposer la collection afin qu'elle ne puisse pas être modifiée (et vous pouvez toujours utiliser une liste en interne pour stocker/modifier les données.)
FxCop a en fait une règle pour les capturer situations:
Do not declare read only mutable reference types
private List<string> _internalList = new List<string>();
public ReadOnlyCollection<string> ListProperty
{
get
{
return _inernalList.AsReadOnly();
}
}
devrait faire l'affaire
2
Vous devez exposer les propriétés telles que le type:
ReadOnlyCollection<T>
Qu'est-ce que « lecture seule » dans le cas d'une lecture seule référence la propriété est juste la référence à l'objet - il ne fait pas l'objet immuable.
Questions connexes
- 1. Application multithread avec propriétés Readonly
- 2. WPF ReadOnly propriétés de dépendance utilisant MVVM
- 3. Utilisation des propriétés pour les types primitifs
- 4. Modifier dynamiquement les propriétés renvoyées par ICustomTypeDescriptor.GetProperties à readonly
- 5. Mocking propriétés virtuelles readonly avec moq
- 6. Readonly PropertyGrid
- 7. Comment obtient-on des propriétés en utilisant la réflexion, tout en ignorant les propriétés héritées?
- 8. C# CA2104 - code automatisé analyse n'aime statiques types readonly mutables
- 9. NHibernate Readonly Entities at Runtime
- 10. xVal Comment valider les propriétés enfants de types complexes?
- 11. Est-il possible d'obtenir une liste de types de nœuds (ou même de types de propriétés) dans Alfresco?
- 12. Liste de propriétés imbriquée
- 13. Liaison de données bidirectionnelle Flex 4 sur les propriétés de types non correspondants
- 14. Pourquoi les articles de Tuple sont ReadOnly?
- 15. Liste de types de propriétés Hiberante, ajoutez-le via sql à la table
- 16. Comment valider une situation readonly = "readonly"
- 17. Différents types de liste chaînée
- 18. Comment extraire les types dérivés d'une liste générique?
- 19. backcolor de readonly richtextbox
- 20. UITabBar ignorant les "clics" occasionnels
- 21. Setters pour les propriétés de type collection
- 22. Type de liste pour stocker les types de données Multipe
- 23. Personnalisation de DataGridViewCell ReadOnly
- 24. Reflétant types de propriétés spécifiques de sous-classes
- 25. JPA et Hibernate Fetch ignorant les associations?
- 26. liste des propriétés d'accès
- 27. liste des propriétés Modification à l'aide datagridview
- 28. DeleteTree échoue sur les fichiers ReadOnly masqués
- 29. propriété publique vs static readonly
- 30. Comment comparer les types génériques?
Pour répondre:. Je ne ai jamais entendu parler avant ReadOnlyCollection Si seulement quelqu'un avait un « coins et recoins de .NET » quelque part avec des trucs comme ReadOnlyCollection! , CompositeCollectio n, etc. –