Mercurial > pub > ImplabNet
view Implab/Component.cs @ 143:16f926ee499d v2
DRAFT: refactoring, adding cancelation token
author | cin |
---|---|
date | Wed, 04 Mar 2015 18:05:39 +0300 |
parents | fe33f4e02ad5 |
children |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Implab { /// <summary> /// Компоненты являются состовными объектами, имеют детерминированный период жизни, автоматически освобождают ресурсы входящие в них. /// </summary> /// <remarks>Компонента управляет временем жизни включенных в нее компонент</remarks> public class Component: Disposable { LinkedList<IDisposable> m_components = new LinkedList<IDisposable>(); /// <summary> /// Коллекция компонент, из которых состоит текущая компонента. /// </summary> public ICollection<IDisposable> Components { get { AssertNotDisposed(); return m_components; } } /// <summary> /// Освобождает компоненты, входящие в состав текущей компоненты. /// </summary> /// <param name="disposing">Признак того, что происходит освобождение ресурсов.</param> protected override void Dispose(bool disposing) { if (disposing) { foreach (var item in m_components) item.Dispose(); m_components.Clear(); } base.Dispose(disposing); } } }