Mercurial > pub > bltoolkit
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 + } +}