diff Source/Data/Sql/ChildContainer.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Source/Data/Sql/ChildContainer.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+
+namespace BLToolkit.Data.Sql
+{
+	public class ChildContainer<TP,TC> : Dictionary<string,TC>, IDictionary<string,TC>
+		where TC : IChild<TP>
+		where TP : class
+	{
+		internal ChildContainer()
+		{
+		}
+
+		internal ChildContainer(TP parent)
+		{
+			_parent = parent;
+		}
+
+		readonly TP _parent;
+		public   TP  Parent { get { return _parent; } }
+
+		public void Add(TC item)
+		{
+			Add(item.Name, item);
+		}
+
+		public new void Add(string key, TC value)
+		{
+			if (value.Parent != null) throw new InvalidOperationException("Invalid parent.");
+			value.Parent = _parent;
+
+			base.Add(key, value);
+		}
+
+		public void AddRange(IEnumerable<TC> collection)
+		{
+			foreach (var item in collection)
+				Add(item);
+		}
+	}
+}