Business Logic Toolkit for .NET
www.bltoolkit.net
|  Home   |  Download   |  Documentation   |  Discussions   |  License   |

  Source.Mapping.ScalarListMapper.cs

 
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
    }
}
 
© 2010 www.bltoolkit.net
support@bltoolkit.net