40
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3 using System.Linq;
|
|
4 using System.Web;
|
|
5
|
|
6 namespace Implab {
|
|
7 /// <summary>
|
|
8 /// Компоненты являются состовными объектами, имеют детерминированный период жизни, автоматически освобождают ресурсы входящие в них.
|
|
9 /// </summary>
|
|
10 /// <remarks>Компонента управляет временем жизни включенных в нее компонент</remarks>
|
|
11 public class Component: Disposable {
|
|
12 LinkedList<IDisposable> m_components = new LinkedList<IDisposable>();
|
|
13
|
|
14 /// <summary>
|
|
15 /// Коллекция компонент, из которых состоит текущая компонента.
|
|
16 /// </summary>
|
|
17 public ICollection<IDisposable> Components {
|
|
18 get {
|
|
19 AssertNotDisposed();
|
|
20 return m_components;
|
|
21 }
|
|
22 }
|
|
23
|
|
24 /// <summary>
|
|
25 /// Освобождает компоненты, входящие в состав текущей компоненты.
|
|
26 /// </summary>
|
|
27 /// <param name="disposing">Признак того, что происходит освобождение ресурсов.</param>
|
|
28 protected override void Dispose(bool disposing) {
|
|
29 if (disposing) {
|
|
30 foreach (var item in m_components)
|
|
31 item.Dispose();
|
|
32 m_components.Clear();
|
|
33 }
|
|
34 base.Dispose(disposing);
|
|
35 }
|
|
36 }
|
|
37 } |