private void CreateProxyInternal() { try { List <IMeasurement> outNew = new List <IMeasurement>(); update = UpdateFormulas; proxy = null; proxy = this.CreateProxy(); //int k = 0; dictF = new Dictionary <char, FormulaMeasurement>(); AssociatedAddition aa = new AssociatedAddition(this, null); foreach (char c in variables.Keys) { object[] o = variables[c] as object[]; ObjectFormulaTree tree = o[1] as ObjectFormulaTree; FormulaMeasurement fm = FormulaMeasurement.Create(tree, 0, c + "", aa); dictF[c] = fm; outNew.Add(fm); } List <IMeasurement> lm = new List <IMeasurement>(); foreach (IMeasurement mm in dictF.Values) { lm.Add(mm); } FormulaMeasurement.Set(lm, proxy); update = UpdateProxy; output = outNew; } catch (Exception ex) { ex.ShowError(10); } }
/// <summary> /// Creates Xml document /// </summary> /// <param name="consumer">Data consumer</param> /// <param name="collection">Components</param> /// <param name="input">Input</param> /// <param name="start">Start</param> /// <param name="step">Step</param> /// <param name="count">Count</param> /// <returns>Result</returns> static public XmlDocument CreateXmlDocument(this IDataConsumer consumer, XmlDocument input, double start, double step, int count) { List <string> p = new List <string>(); IMeasurement cond = null; string arg = null; Dictionary <string, Func <Func <object> > > d = new Dictionary <string, Func <Func <object> > >(); XmlElement r = input.DocumentElement; foreach (XmlElement e in r.ChildNodes) { string name = e.Name; if (name.Equals("Condition")) { cond = consumer.FindMeasurement(e.InnerText, true); continue; } if (name.Equals("Argument")) { arg = e.InnerText; continue; } if (name.Equals("Parameters")) { XmlNodeList nl = e.ChildNodes; foreach (XmlElement xp in nl) { string pn = null; string pv = null; foreach (XmlElement xpp in xp.ChildNodes) { string npp = xpp.Name; if (npp.Equals("Name")) { pn = xpp.InnerText; continue; } pv = xpp.InnerText; } IMeasurement mcc = consumer.FindMeasurement(pn, false); d[pv] = mcc.ToValueHolder(); } } } XmlParameterWriter xpv = new XmlParameterWriter(null); IParameterWriter pvv = xpv; Action acts = () => { Dictionary <string, string> dpp = new Dictionary <string, string>(); foreach (string k in d.Keys) { object v = d[k]()(); FormulaMeasurement.CheckValue(v); dpp[k] = v + ""; } pvv.Write(dpp); }; Action act = (cond == null) ? acts : () => { foreach (string k in d.Keys) { object v = d[k]()(); FormulaMeasurement.CheckValue(v); } if ((bool)cond.Parameter()) { acts(); } }; try { consumer.PerformFixed(start, step, count, StaticExtensionDataPerformerInterfaces.Calculation, 0, act); } catch (Exception e) { e.ShowError(10); } return(xpv.Document); }