using System.Collections.Generic;
public static void Main()
SlideShowZoomEffect enumValue;
EnumHelper.TryParse<SlideShowZoomEffect>("ZoonOut", out enumValue);
Console.WriteLine("{0}", enumValue.ToString("f"));
public enum SlideShowZoomEffect
public class SynonymAttribute : Attribute
private readonly string _name;
public SynonymAttribute(string name)
public static class EnumHelper
public static bool TryParse<TEnum>(string nameOrSynonym, out TEnum enumValue)where TEnum : struct
enumValue = default (TEnum);
string[] names = Enum.GetNames(typeof (TEnum));
if (!Enum.TryParse<TEnum>(nameOrSynonym, true, out result))
nameOrSynonym = nameOrSynonym.ToLowerInvariant();
FieldInfo enumValueField = typeof (TEnum).GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.GetField)
field => field.GetCustomAttribute<SynonymAttribute>() != null
&& field.GetCustomAttribute<SynonymAttribute>().Name.ToLowerInvariant() == nameOrSynonym
if (enumValueField != null)
enumValue = (TEnum)enumValueField.GetValue(null);