Esempio n. 1
0
        private static string GetXmlValueFromEnum(Enum enumValue)
        {
            XmlValueAttribute xmlValueAttribute = enumValue.GetType().GetTypeInfo().GetDeclaredField(enumValue.ToString()).GetCustomAttribute <XmlValueAttribute>();

            if (xmlValueAttribute != null)
            {
                return(xmlValueAttribute.XmlValue);
            }

            return(enumValue.ToString());
        }
Esempio n. 2
0
        protected virtual void ProcessProperty(PropertyInfo property,
                                               ICollection <Serializer <TContext> > attributeSerializers,
                                               ICollection <Serializer <TContext> > elementSerializers)
        {
            XmlAttributeAttribute attribute_attribute  = null;
            XmlElementAttribute   element_attribute    = null;
            XmlFlagAttribute      flag_attribute       = null;
            XmlArrayAttribute     array_attribute      = null;
            XmlArrayItemAttribute array_item_attribute = null;
            XmlValueAttribute     value_attribute      = null;

            foreach (var custom_attribute in property.GetCustomAttributes(false))
            {
                if (custom_attribute is DoNotSerializeAttribute)
                {
                    attribute_attribute = null;
                    element_attribute   = null;
                    flag_attribute      = null;
                    array_attribute     = null;
                    value_attribute     = null;
                    break;
                }

                var attribute = custom_attribute as XmlAttributeAttribute;
                if (attribute != null)
                {
                    attribute_attribute = attribute;
                    continue;
                }

                var element = custom_attribute as XmlElementAttribute;
                if (element != null)
                {
                    element_attribute = element;
                    continue;
                }

                var flag = custom_attribute as XmlFlagAttribute;
                if (flag != null)
                {
                    flag_attribute = flag;
                    continue;
                }

                var array = custom_attribute as XmlArrayAttribute;
                if (array != null)
                {
                    array_attribute = array;
                    continue;
                }

                var array_item = custom_attribute as XmlArrayItemAttribute;
                if (array_item != null)
                {
                    array_item_attribute = array_item;
                    continue;
                }

                var value = custom_attribute as XmlValueAttribute;
                if (value != null)
                {
                    value_attribute = value;
                    continue;
                }
            }

            if (attribute_attribute != null)
            {
                attributeSerializers.Add(
                    CreateSerializer(property, CreateAttributeSerializer(property, attribute_attribute)));
            }
            else if (element_attribute != null)
            {
                elementSerializers.Add(
                    CreateSerializer(property, CreateElementSerializer(property, element_attribute)));
            }
            else if (flag_attribute != null)
            {
                elementSerializers.Add(
                    CreateSerializer(property, CreateFlagSerializer(property, flag_attribute)));
            }
            else if (array_attribute != null)
            {
                elementSerializers.Add(
                    CreateSerializer(property,
                                     CreateArraySerializer(property, array_attribute, array_item_attribute)));
            }
            else if (array_item_attribute != null)
            {
                elementSerializers.Add(
                    CreateSerializer(property, CreateArrayItemSerializer(property, array_item_attribute)));
            }
            else if (value_attribute != null)
            {
                elementSerializers.Add(
                    CreateSerializer(property, CreateValueSerializer(property)));
            }
        }