static void SetTimeProvider(IMeasurements m, ITimeMeasureProvider provider, IDictionary <ITimeMeasureConsumer, IMeasurement> dictionary) { if (m is ITimeMeasureConsumer) { ITimeMeasureConsumer mc = m as ITimeMeasureConsumer; if (dictionary.ContainsKey(mc)) { if (mc.Time != provider.TimeMeasurement) { dictionary[mc] = mc.Time; mc.Time = provider.TimeMeasurement; } } else { dictionary[mc] = mc.Time; mc.Time = provider.TimeMeasurement; } } if (m is IDataConsumer) { IDataConsumer dc = m as IDataConsumer; SetTimeProvider(dc, provider, dictionary); } if (m is MeasurementsWrapper) { MeasurementsWrapper mw = m as MeasurementsWrapper; int n = mw.Count; for (int i = 0; i < n; i++) { SetTimeProvider(mw[i], provider, dictionary); } } }
void Add(object o) { if (o == null) { return; } if (o is IDataConsumer) { IDataConsumer c = o as IDataConsumer; if (!consumers.Contains(c)) { consumers.Add(c); } } if (o is IUpdatableObject) { IUpdatableObject u = o as IUpdatableObject; if (!upd.Contains(u)) { upd.Add(u); } } if (o is IDynamical) { IDynamical d = o as IDynamical; if (!dyn.Contains(d)) { dyn.Add(d); } } if (o is IStep) { IStep s = o as IStep; s.Step = 0; if (!steps.Contains(s)) { steps.Add(s); } } if (o is IChildrenObject) { IChildrenObject ch = o as IChildrenObject; IAssociatedObject[] objs = ch.Children; foreach (object obj in objs) { Add(obj); } } if (o is MeasurementsWrapper) { MeasurementsWrapper mw = o as MeasurementsWrapper; int n = mw.Count; for (int i = 0; i < n; i++) { Add(mw[i]); } } }