diff Source/Mapping/ScalarListMapper.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/ScalarListMapper.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,66 @@
+using System;
+using System.Collections;
+
+namespace BLToolkit.Mapping
+{
+	public class ScalarListMapper : MapDataSourceDestinationBase
+	{
+		public ScalarListMapper(IList list, Type type)
+		{
+			_list = list;
+			_type = type;
+		}
+
+		private readonly IList _list;
+		private readonly Type  _type;
+		private          int   _index;
+
+		#region Destination
+
+		public override Type GetFieldType(int index)
+		{
+			return _type;
+		}
+
+		public override int GetOrdinal(string name)
+		{
+			return 0;
+		}
+
+		public override void SetValue(object o, int index, object value)
+		{
+			_list.Add(value);
+		}
+
+		public override void SetValue(object o, string name, object value)
+		{
+			_list.Add(value);
+		}
+
+		#endregion
+
+		#region Source
+
+		public override int Count
+		{
+			get { return _index < _list.Count? 1: 0; }
+		}
+
+		public override string GetName(int index)
+		{
+			return string.Empty;
+		}
+
+		public override object GetValue(object o, int index)
+		{
+			return _list[_index++];
+		}
+
+		public override object GetValue(object o, string name)
+		{
+			return _list[_index++];
+		}
+
+		#endregion
+	}
+}