File: DynamicData\DataControlReferenceCollection.cs
Project: ndp\fx\src\xsp\system\DynamicData\System.Web.DynamicData.csproj (System.Web.DynamicData)
namespace System.Web.DynamicData {
    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using System.Diagnostics.CodeAnalysis;    
    using System.Security.Permissions;    
 
    /// <summary>
    /// Represents a collectin of DataControlReferences
    /// </summary>
    public class DataControlReferenceCollection : Collection<DataControlReference> {               
        public DataControlReferenceCollection(DynamicDataManager owner) {
            if (owner == null) {
                throw new ArgumentNullException("owner");
            }
 
            Owner = owner;
        }
 
        public DynamicDataManager Owner {
            get;
            private set;
        }
 
        internal void Initialize() {
            foreach (DataControlReference reference in this) {
                reference.Owner = Owner;
            }
        }
 
        [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")]
        protected override void SetItem(int index, DataControlReference item) {
            item.Owner = Owner;
            base.SetItem(index, item);
        }
 
        [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")]
        protected override void InsertItem(int index, DataControlReference item) {
            item.Owner = Owner;
            base.InsertItem(index, item);
        }
 
        [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")]
        protected override void RemoveItem(int index) {
            this[index].Owner = null;
            base.RemoveItem(index);
        }
    }
}