Вы ищете ReadOnlyCollection
, который существует с .NET2.
IList<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = new ReadOnlyCollection<string>(foo);
или
List<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = foo.AsReadOnly();
Это создает доступное только для чтения представление , которое отражает изменения, внесенные в упакованную коллекцию.