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);
}
}
}