/// <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]; }