public void Handle(EnumerationTypeDescriptor enumeration) { var lhsType = Namespace.Types.FindByName(enumeration.Name) as EnumerationTypeDescriptor; if (lhsType == null) { lhsType = Namespace.CreateEnumerationType(enumeration.Name); } //TODO preserve position? foreach (var item in enumeration.Items) { var lhsItem = lhsType.Items.FirstOrDefault(_ => _.Name == item.Name); if (lhsItem == null) { if (item.Value.HasValue) { lhsType.AddItem(item.Name, item.Value.Value); } else { lhsType.AddItem(item.Name); } } else { _logger.LogWarning("different item definitions lhs:[{lhs}], rhs:[{rhs}]", lhsItem.ToXml(), item.ToXml()); } } }
public static void ToXml(this EnumerationTypeDescriptor descriptor, XmlWriter writer) { writer.WriteStartElement("Enumeration"); writer.WriteAttributeString("name", descriptor.Name); foreach (var item in descriptor.Items) { item.ToXml(writer); } writer.WriteEndElement(); }
private static void ReadEnumItem(XmlReader reader, EnumerationTypeDescriptor descriptor) { var item = ReadEnumItem(reader); if (item.Value.HasValue) { descriptor.AddItem(item.Key, item.Value.Value); } else { descriptor.AddItem(item.Key); } }
public void Handle(EnumerationTypeDescriptor enumeration) { var descriptor = Namespace.CreateEnumerationType(GetId(enumeration.Name), enumeration.Name); foreach (var item in enumeration.Items) { if (item.Value.HasValue) { descriptor.AddItem(item.Name, item.Value.Value); } else { descriptor.AddItem(item.Name); } } }