Ici je le bit de code suivant:De retour d'un ReadOnlyCollection d'une méthode avec un type de retour IList
private IList<IState> _states = new List<IState>();
private ReadOnlyCollection<IState> _statesViewer;
public IList<IState> States { get { return _statesViewer; } }
Je crois que généralement il est préférable de retourner les interfaces plutôt que les classes concrètes elles-mêmes, mais dans ce cas, ne devrais-je pas définir comme le type de retour de la propriété States
un ?
Tout utilisateur de ma bibliothèque pensera qu'il est possible de faire tout ce que vous pouvez faire avec un IList
si je le définis comme tel, et cela signifie ajouter des éléments. Ce n'est pas vrai et je romprai définitivement le contrat en l'exposant comme IList.
Ai-je raison avec cette vue ou y a-t-il autre chose qui me manque ici?