| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | using System;using System.Collections;using System.Collections.Generic;namespace WinSCP{    internal class ReadOnlyInteropCollectionHelper<T> : ICollection<T>    {        public void InternalAdd(T item)        {            _list.Add(item);        }        public void InternalRemoveFirst()        {            _list.RemoveAt(0);        }        public T this[int index]        {            get            {                return _list[index];            }            set            {                throw CreateReadOnlyException();            }        }        #region ICollection<T> Members        public void Add(T item)        {            throw CreateReadOnlyException();        }        public void Clear()        {            throw CreateReadOnlyException();        }        public bool Contains(T item)        {            return _list.Contains(item);        }        public void CopyTo(T[] array, int arrayIndex)        {            _list.CopyTo(array, arrayIndex);        }        public int Count        {            get { return _list.Count; }        }        public bool IsReadOnly        {            get { return true; }        }        public bool Remove(T item)        {            throw CreateReadOnlyException();        }        #endregion        #region IEnumerable<T> Members        public IEnumerator<T> GetEnumerator()        {            return _list.GetEnumerator();        }        #endregion        #region IEnumerable Members        IEnumerator IEnumerable.GetEnumerator()        {            return _list.GetEnumerator();        }        #endregion        private static Exception CreateReadOnlyException()        {            return new InvalidOperationException("Collection is read-only.");        }        private readonly List<T> _list = new List<T>();    }}
 |