public void AddTag(Tag tag) { if (GetTag(tag.Name) != null && tag.Name != "") // Tags with "" are actually list items { var index = 0; for (var i = 0; i < SubTags.Count; i++) { if (SubTags[i].Name == tag.Name) { index = i; break; } } Logger.Log($"Adding Tag of a similar name {tag.Name}"); if (tag.SubTags.Count == 0) { Logger.Log("Replacing Tag, as it is a value tag"); SubTags.RemoveAt(index); } else { Logger.Log("Because there are subtags, merging tags"); foreach (var t in tag.SubTags) { SubTags[index].AddTag(t); } return; } } SubTags.Add(tag); }
protected internal void AddSubTag(Asn1Tag subTag) { SubTags.Add(subTag); subTag.ParentTag = this; }