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