private static void MergeInto(VMS left, VMS right) { left.Id = right.Id; left.Version = right.Version; foreach (var softListRight in right.SoftwareList) { var softListLeft = left.SoftwareList.FirstOrDefault(x => x.SoftwareName == softListRight.SoftwareName); if (softListLeft == null) { left.SoftwareList.Add(softListRight); } else { foreach (var item in softListRight.VMS) { var softListLeftVMS = softListLeft.VMS.FirstOrDefault(x => x.Version == item.Version && x.OSVersion == item.OSVersion); if (softListLeftVMS == null) { softListLeft.VMS.Add(item); } else { softListLeftVMS = item; } } } } }
private static void Merge(string path, VMS vms) { var originPath = Path.Combine(path, "vms.json"); var generatedPath = Path.Combine(path, $"vms_{vms.Version}.json"); var ouputPath = Path.Combine(path, $"vms.json"); if (!System.IO.File.Exists(originPath)) { System.IO.File.Copy(generatedPath, ouputPath); return; } var origin = System.IO.File.ReadAllText(originPath); var jsonOrigin = JsonConvert.DeserializeObject<VMS>(origin); var generated = System.IO.File.ReadAllText(generatedPath); var jsonGenerated = JsonConvert.DeserializeObject<VMS>(generated); MergeInto(jsonOrigin, jsonGenerated); string json = JsonConvert.SerializeObject(jsonOrigin, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); System.IO.File.WriteAllText(ouputPath, json); }
public VMS CreateVms() { var resultVms = new VMS { Id = _buildId, ReleaseNotes = ReleaseNotesUrl, Active = true, Version = _buildId }; resultVms.SoftwareList = new List <Software>(); var osList = new List <OS>(); foreach (var osName in _vms) { var softwareList = new List <Software>(); foreach (var softwareName in osName.Value) { GenerateSoftwareList(softwareList, softwareName); if (softwareName.Name == "VirtualBox") { dynamic a = new JObject(); a.Vagrant = softwareName.Value; GenerateSoftwareList(softwareList, ((JContainer)a).First); } } foreach (var softwareItem in softwareList) { MergeSoftwareItems(resultVms.SoftwareList, softwareItem); // resultVms.SoftwareList.AddRange(softwareList.ToArray()); } } return(resultVms); }
private void button1_Click(object sender, RoutedEventArgs e) { try { slaveSyncSruct = new SlaveSyncSruct(); //Ловим при обработке (произвольная структура) ms = new MMS(); vc = new VMS(); slaveSyncSruct.SignalFormedMetaClass += ms.execution_processing_reguest; slaveSyncSruct.SignalFormedMetaClass += vc.execution_processing_reguest; slaveSyncSruct.SignalFormedMetaClass += DisplayStruct; Thread thread = new Thread(slaveSyncSruct.Open); thread.Start(); //Console.WriteLine("Slave Запущен на " + slaveSyncSruct.serialPort.PortName); logger.Trace("Slave Запущен на " + slaveSyncSruct.serialPort.PortName); } catch (Exception ex) { logger.Error(ex); //Console.WriteLine(ex); } }
private static void CreateOutputFile(string path, VMS vms) { var fileName = $"vms_{vms.Version}.json"; var fileFullPath = Path.Combine(path, fileName); string json = JsonConvert.SerializeObject(vms, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); System.IO.File.WriteAllText(fileFullPath, json); Console.WriteLine($"{fileFullPath} created"); }
//3 структура private void button9_Click(object sender, RoutedEventArgs e) { if (textBox7.Text != "") { Test4SendStruct test4SendStruct; test4SendStruct.name = textBox7.Text; test4SendStruct.fre = textBox7.Text; test4SendStruct.ab = textBox7.Text; test4SendStruct.cd = textBox7.Text; test4SendStruct.count2 = new int[10000]; int[] ab = new int[10000]; for (int i = 0; i < 1000; i++) { Random rand = new Random(); ab[i] = rand.Next(0, 1000); } vc = new VMS(test4SendStruct); try { metaClassFor = new MetaClassForStructandtherdata(vc); // создаем объект BinaryFormatter BinaryFormatter formatter = new BinaryFormatter(); formatter.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full; var stream = new MemoryStream(); formatter.Serialize(stream, metaClassFor); masterSyncStruct.send_multi_message(stream); Console.WriteLine(stream); } catch (Exception ex) { //Console.WriteLine(ex); logger.Error(ex); } } }