Используя другую статью в качестве основы, вы можете создать метод расширения следующим образом:
public static class LocalizedEnumExtensions
{
private static ResourceManager _resources = new ResourceManager("MyClass.myResources",
System.Reflection.Assembly.GetExecutingAssembly());
public static IEnumerable<string> GetLocalizedNames(this IEnumerable enumValues)
{
foreach(var e in enumValues)
{
string localizedDescription = _resources.GetString(String.Format("{0}.{1}", e.GetType(), e));
if(String.IsNullOrEmpty(localizedDescription))
{
yield return e.ToString();
}
else
{
yield return localizedDescription;
}
}
}
}
Вы можете использовать его следующим образом:
Enum.GetValues(typeof(TipoControlador)).GetLocalizedNames();
Технически, этот метод расширенияпримет любой массив, и вы не можете ограничить его работой только с перечислением, но вы можете добавить дополнительную проверку в метод расширения, если считаете, что это важно:
if(!e.GetType().IsEnum) throw new InvalidOperationException(String.Format("{0} is not a valid Enum!", e.GetType()));