diff Source/Mapping/RelationAttribute.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/Mapping/RelationAttribute.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,108 @@
+using System;
+using System.Collections.Generic;
+
+namespace BLToolkit.Mapping
+{
+
+	[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, Inherited = true, AllowMultiple = false)]
+	public sealed class RelationAttribute : Attribute
+	{
+		#region Constructors
+
+		public RelationAttribute()
+		{
+		}
+
+		public RelationAttribute(Type destination)
+		{
+			_destination = destination;
+		}
+
+		public RelationAttribute(string slaveIndex)
+		{
+			SlaveIndex1 = slaveIndex;
+		}
+
+		public RelationAttribute(string slaveIndex, string masterIndex)
+			: this(slaveIndex)
+		{
+			MasterIndex1 = masterIndex;
+		}
+
+		public RelationAttribute(Type destination, string slaveIndex)
+			: this(destination)
+		{
+			SlaveIndex1 = slaveIndex;
+		}
+
+		public RelationAttribute(Type destination, string slaveIndex, string masterIndex)
+			: this(destination)
+		{
+			SlaveIndex1 = slaveIndex;
+			MasterIndex1 = masterIndex;
+		}
+
+		#endregion
+
+		private Type _destination;
+		public  Type Destination { get { return _destination; } }
+
+		private string _masterIndex1;
+		public  string MasterIndex1 { get { return _masterIndex1; } set { _masterIndex1 = value; } }
+		
+		private string _masterIndex2;
+		public  string MasterIndex2 { get { return _masterIndex2; } set { _masterIndex2 = value; } }
+		
+		private string _masterIndex3;
+		public  string MasterIndex3 { get { return _masterIndex3; } set { _masterIndex3 = value; } }
+
+		private string _slaveIndex1;
+		public  string SlaveIndex1 { get { return _slaveIndex1; } set { _slaveIndex1 = value; } }
+		
+		private string _slaveIndex2;
+		public  string SlaveIndex2 { get { return _slaveIndex2; } set { _slaveIndex2 = value; } }
+		
+		private string _slaveIndex3;
+		public  string SlaveIndex3 { get { return _slaveIndex3; } set { _slaveIndex3 = value; } }
+
+		public MapIndex MasterIndex
+		{
+			get
+			{
+				List<String> index = new List<string>();
+
+				AddIndex(index, MasterIndex1);
+				AddIndex(index, MasterIndex2);
+				AddIndex(index, MasterIndex3);
+
+				if (index.Count == 0)
+					return null;
+
+				return new MapIndex(index.ToArray());
+			}
+		}
+
+		public MapIndex SlaveIndex
+		{
+			get
+			{
+				List<String> index = new List<string>();
+
+				AddIndex(index, SlaveIndex1);
+				AddIndex(index, SlaveIndex2);
+				AddIndex(index, SlaveIndex3);
+
+				if (index.Count == 0)
+					return null;
+
+				return new MapIndex(index.ToArray());
+			}
+		}
+
+		private void AddIndex(List<string> index, string field)
+		{
+			if (!string.IsNullOrEmpty(field))
+				index.Add(field);
+		}
+	}
+}