public static ITypeMember AddRandomMember(this ITypeTemplate template, Authentication authentication) { var member = template.AddNew(authentication); member.InitializeRandom(authentication); template.EndNew(authentication, member); return(member); }
public static void AddMember(this ITypeTemplate template, Authentication authentication, string name, long value, string comment) { var member = template.AddNew(authentication); member.SetName(authentication, name); member.SetValue(authentication, value); member.SetComment(authentication, comment); template.EndNew(authentication, member); }
public static ITypeTemplate CreateAddNew(this ITypeTemplate template, Authentication authentication, string typeName, long value, int?index = null) { var type = template.AddNew(authentication); type.SetName(authentication, typeName); type.SetValue(authentication, value); if (index != null) { type.SetIndex(authentication, index.Value); } template.EndNew(authentication, type); return(template); }
public void EndNew() { template.EndNew(authentication, member); }
public static bool Edit(ITypeTemplate template, Authentication authentication) { var memberCount = template.Dispatcher.Invoke(() => template.Count); var memberList = new List <JsonTypeMemberInfos.ItemInfo>(memberCount); var idToMember = new Dictionary <Guid, ITypeMember>(memberCount); template.Dispatcher.Invoke(() => { foreach (var item in template) { var member = new JsonTypeMemberInfos.ItemInfo() { ID = Guid.NewGuid(), Name = item.Name, Value = item.Value, Comment = item.Comment, }; idToMember.Add(member.ID, item); memberList.Add(member); } }); var members = new JsonTypeMemberInfos() { Items = memberList.ToArray() }; using (var editor = new JsonEditorHost(members)) { if (editor.Execute() == false) { return(false); } members = editor.Read <JsonTypeMemberInfos>(); } var terminal = new Terminal(); var key = terminal.ReadKey("do you want to save changes?(Y/N)", ConsoleKey.Y, ConsoleKey.N); if (key != ConsoleKey.Y) { return(false); } template.Dispatcher.Invoke(() => { foreach (var item in idToMember.Keys.ToArray()) { if (members.Items.Any(i => i.ID == item) == false) { var member = idToMember[item]; member.Delete(authentication); idToMember.Remove(item); } } for (var i = 0; i < members.Items.Length; i++) { var item = members.Items[i]; if (item.ID == Guid.Empty) { var member = template.AddNew(authentication); member.SetName(authentication, item.Name); member.SetValue(authentication, item.Value); member.SetComment(authentication, item.Comment); template.EndNew(authentication, member); item.ID = Guid.NewGuid(); idToMember.Add(item.ID, member); members.Items[i] = item; } else if (idToMember.ContainsKey(item.ID) == true) { var member = idToMember[item.ID]; if (member.Name != item.Name) { member.SetName(authentication, item.Name); } if (member.Value != item.Value) { member.SetValue(authentication, item.Value); } if (member.Comment != item.Comment) { member.SetComment(authentication, item.Comment); } } else { throw new InvalidOperationException($"{item.ID} is not existed member."); } } for (var i = 0; i < members.Items.Length; i++) { var item = members.Items[i]; var member = idToMember[item.ID]; member.SetIndex(authentication, i); } template.EndEdit(authentication); }); return(true); }