using Newtonsoft.Json.Converters;
using System.ComponentModel;
[JsonConverter(typeof(StringEnumConverter))]
public enum FavoriteProductEnum
public static T GetValueFromDescription<T>(string description)
if (!type.IsEnum) throw new InvalidOperationException();
var fields = type.GetFields();
foreach (var field in fields)
var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
if (attribute.Description.Equals(description, StringComparison.InvariantCultureIgnoreCase))
return (T)field.GetValue(null);
if (field.Name.Equals(description, StringComparison.InvariantCultureIgnoreCase))
return (T)field.GetValue(null);
throw new ArgumentException("Not found.", "description");
public static void Main()
var e = GetValueFromDescription<FavoriteProductEnum>("MASCULINO");
Console.WriteLine(e.GetType());