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());
                }
            }
        }
示例#2
0
 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();
 }
示例#3
0
        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);
            }
        }
示例#4
0
            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);
                    }
                }
            }