¿Cómo puedo exponer un List<T>
para que sea de solo lectura, pero se puede establecer de forma privada?Lista <T> solo con un conjunto privado
Esto no funciona:
public List<string> myList {readonly get; private set; }
Incluso si lo hace:
public List<string> myList {get; private set; }
todavía se puede hacer esto:
myList.Add("TEST"); //This should not be allowed
Creo que se puede tener:
public List<string> myList {get{ return otherList;}}
private List<string> otherList {get;set;}
gran punto. Mucha gente extraña el concepto de tipos de referencia y establece la referencia como de solo lectura. 1 –
Aún mejor sería que el ReadOnlyCollection como IList. –
Joe
+1. Devolver un System.Collections.ObjectModel.ReadOnlyCollection público es mejor que usar un "conjunto privado" en una propiedad pública porque le da una verificación en tiempo de compilación. Lo que significa que arrojará errores de compilación al usar Add() o RemoveAt() en su colección de solo lectura, mientras que el "conjunto privado" no lo hará. – MikeTeeVee