//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------- namespace System.Collections.ObjectModel { using System; using System.Collections.Generic; using System.ServiceModel; class FreezableCollection : Collection, ICollection { bool frozen; public FreezableCollection() : base() { } public FreezableCollection(IList list) : base(list) { } public bool IsFrozen { get { return this.frozen; } } bool ICollection.IsReadOnly { get { return this.frozen; } } public void Freeze() { this.frozen = true; } protected override void ClearItems() { ThrowIfFrozen(); base.ClearItems(); } protected override void InsertItem(int index, T item) { ThrowIfFrozen(); base.InsertItem(index, item); } protected override void RemoveItem(int index) { ThrowIfFrozen(); base.RemoveItem(index); } protected override void SetItem(int index, T item) { ThrowIfFrozen(); base.SetItem(index, item); } void ThrowIfFrozen() { if (this.frozen) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.ObjectIsReadOnly)); } } } }