/// <summary>
		/// Инициализирующий конструктор.
		/// </summary>
		/// <param name="enumer">Перечислитель.</param>
		/// <param name="persistentValues">Значения столбцов, постоянные для каждой строки.</param>
		/// <param name="columnNames">Имена значений столбцов.</param>
		public EnumeratorDataReader(IEnumerator enumer, ParamsDic persistentValues, IEnumerable<string> columnNames)
		{
			if(enumer == null)
				throw new ArgumentNullException("enumer");
			_en = enumer;
			Type t = enumer.GetType();
			if(t.IsGenericType)
				t = t.GetGenericArguments()[0];
			else
				t = typeof(object);
			if(columnNames == null)
			{
				if(persistentValues != null)
					foreach(string s in persistentValues.Params)
						_columns.Add(new ValuesPair<string, object>(s, persistentValues[s]));
				foreach(PropertyInfo pi in t.GetProperties())
					_columns.Add(new ValuesPair<string, object>(pi.Name, ReflectionHelper.CreateCallLambdaFunc(pi.GetGetMethod())));
			}
			else
				foreach(string s in columnNames)
					if(persistentValues != null && persistentValues.ContainsKey(s))
						_columns.Add(new ValuesPair<string, object>(s, persistentValues[s]));
					else
						_columns.Add(new ValuesPair<string, object>(s,
							ReflectionHelper.CreateCallLambdaFunc(t.GetProperty(s).GetGetMethod())));
		}
		/// <summary>
		/// Перезапускает чтение без обновления столбцов.
		/// </summary>
		public void Reset(IEnumerator enums, ParamsDic persistentValues)
		{
			_en = enums;
			//_en.Reset();
			if(persistentValues != null)
			 foreach(var i in _columns)
				 if(i.Value2 is Delegate == false && persistentValues.ContainsKey(i.Value1))
					 i.Value2 = persistentValues[i.Value1];
		}