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()); }
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))); } }