/// <summary> /// Takes output generated by SerializeParameters(), deserializes it and assigns the values /// to the Parameters /// </summary> /// <param name="parameters">An array of parameters to set with the new values</param> /// <param name="data">Serialized values, as generated by the SerializeParameters() method</param> public static void DeserializeParameters(Parameter[] parameters, byte[] data) { parameters = parameters.OrderBy(x => x.Index).ToArray(); string values = Encoding.UTF8.GetString(data); var items = values.Split(','); var filtered = items.Where(x => x != null && x.Trim() != "").ToList(); var select = filtered.Select(x => Convert.ToDouble(x.Trim(), System.Globalization.CultureInfo.InvariantCulture)).ToList(); if (select.Count != parameters.Length) throw new Exception("Illegal program data. Number of parameters does not match"); for (int i = 0; i < parameters.Length; i++) parameters[i].Value = select[i]; }
/// <summary> /// Accepts an array of Parameters and returns their values in a serialized format. /// </summary> /// <param name="parameters"></param> /// <returns></returns> public static byte[] SerializeParameters(Parameter[] parameters) { parameters = parameters.OrderBy(x => x.Index).ToArray(); string output = ""; foreach (var p in parameters) output += p.Value.ToString(System.Globalization.CultureInfo.InvariantCulture) + ", "; return Encoding.UTF8.GetBytes(output); }