using System; using System.Collections.Concurrent; using System.Reflection; namespace Kreta.Framework.Util { public static class StringValueUtils { private static readonly ConcurrentDictionary values = new ConcurrentDictionary(); public static string GetStringValue(this Enum key) { return values.GetOrAdd(key, k => k.GetType() .GetMember(k.ToString())[0] .GetCustomAttribute()? .Value); } } }