/// <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()))); }
//------------------------------------------------------------------------------------- #region << Constructors >> /// <summary> /// Конструктор по умолчанию. /// </summary> public ConParamsForm() { InitializeComponent(); backup = new ParamsDic(); foreach(PropertyInfo pi in typeof(PulsarConnection).GetProperties(BindingFlags.Static | BindingFlags.Public)) backup[pi.Name] = pi.GetValue(null, null); }
//------------------------------------------------------------------------------------- #region IDisposable Members /// <summary> /// Подготавливает объект к уничтожению. /// </summary> public void Dispose() { UnlinkItem(); if(_ob != null && _ob is IObjectChangeNotify) { ((IObjectChangeNotify)_ob).ObjectChanging -= Object_ObjectChanging; ((IObjectChangeNotify)_ob).ObjectChanged -= Object_ObjectChanged; } if(_pars != null) { _pars.ObjectChanging -= Params_ObjectChanging; _pars.ObjectChanged -= Params_ObjectChanged; } _ob = null; _pars = null; _txt = null; }
/// <summary> /// Инициализирующий конструктор. /// </summary> /// <param name="enums">Перечисление.</param> /// <param name="persistentValues">Значения столбцов, постоянные для каждой строки.</param> /// <param name="columnNames">Имена значений столбцов.</param> public EnumeratorDataReader(IEnumerable enums, Type itemType, ParamsDic persistentValues, IEnumerable<string> columnNames) : this(enums.GetEnumerator(), itemType, persistentValues, columnNames) { }
/// <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]; }
//------------------------------------------------------------------------------------- #region << Methods >> /// <summary> /// Перезапускает чтение без обновления столбцов. /// </summary> public void Reset(IEnumerable enums, ParamsDic persistentValues) { if(enums == null) throw new ArgumentNullException("enums"); Reset(enums.GetEnumerator(), persistentValues); }