diff Implab/Component.cs @ 40:fe33f4e02ad5

improved tracing added text listeners (file,console)
author cin
date Tue, 15 Apr 2014 17:52:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/Component.cs	Tue Apr 15 17:52:09 2014 +0400
@@ -0,0 +1,37 @@
+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);
+        }
+    }
+}
\ No newline at end of file