File: net\System\Net\mail\LinkedResourceCollection.cs
Project: ndp\fx\src\System.csproj (System)
using System;
using System.Collections.ObjectModel;
 
namespace System.Net.Mail
{
    public sealed class LinkedResourceCollection : Collection<LinkedResource>, IDisposable
    {
        bool disposed = false;
        internal LinkedResourceCollection()
        { }
 
        public void Dispose()
        {
            if(disposed){
                return;
            }
 
            foreach (LinkedResource resource in this)
            {
                resource.Dispose();
            }
            Clear();
            disposed = true;
        }
 
 
        
        protected override void RemoveItem(int index){
            if (disposed) {
                throw new ObjectDisposedException(this.GetType().FullName);
            }
 
            base.RemoveItem(index);
        }
        
        protected override void ClearItems(){
            if (disposed) {
                throw new ObjectDisposedException(this.GetType().FullName);
            }
 
            base.ClearItems();
        }
 
        protected override void SetItem(int index, LinkedResource item){
            if (disposed) {
                throw new ObjectDisposedException(this.GetType().FullName);
            }
              
            if(item==null) {
                throw new ArgumentNullException("item");
            }
    
            base.SetItem(index,item);
        }
        
        protected override void InsertItem(int index, LinkedResource item){
            if (disposed) {
                throw new ObjectDisposedException(this.GetType().FullName);
            }
              
            if(item==null){
                 throw new ArgumentNullException("item");
            }
    
            base.InsertItem(index,item);
        }
    }
}