using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Implab { /// /// Компоненты являются состовными объектами, имеют детерминированный период жизни, автоматически освобождают ресурсы входящие в них. /// /// Компонента управляет временем жизни включенных в нее компонент public class Component: Disposable { LinkedList m_components = new LinkedList(); /// /// Коллекция компонент, из которых состоит текущая компонента. /// public ICollection Components { get { AssertNotDisposed(); return m_components; } } /// /// Освобождает компоненты, входящие в состав текущей компоненты. /// /// Признак того, что происходит освобождение ресурсов. protected override void Dispose(bool disposing) { if (disposing) { foreach (var item in m_components) item.Dispose(); m_components.Clear(); } base.Dispose(disposing); } } }