Get XmlEnumAttribute from enum

前端 未结 3 1799
感动是毒
感动是毒 2020-12-30 02:52

I have enum:

public enum Operation {
    /// 
    [System.Xml.Serialization.XmlEnumAttribute(\"01\")]
    Item01,

    /// 
          


        
3条回答
  •  太阳男子
    2020-12-30 03:42

    You could create an helper (static) class, with this extension method

    public static string GetXmlEnumAttributeValueFromEnum(this TEnum value) where TEnum : struct, IConvertible
    {
        var enumType = typeof(TEnum);
        if (!enumType.IsEnum) return null;//or string.Empty, or throw exception
    
        var member = enumType.GetMember(value.ToString()).FirstOrDefault();
        if (member == null) return null;//or string.Empty, or throw exception
    
        var attribute = member.GetCustomAttributes(false).OfType().FirstOrDefault();
        if (attribute == null) return null;//or string.Empty, or throw exception
        return attribute.Name;
    }
    

    usage

    var res = Operation.Item1;
    var result = res.GetXmlAttributeValueFromEnum();
    

提交回复
热议问题