Пример про локализацию
http://adamyan.blogspot.com/2010/02/aspnet-mvc-2-localization-complete.html
Пример с приведением enum к dictionary без лишних заморочек
http://stackoverflow.com/questions/5583717/enum-to-dictionary-c-sharp
var dict = Enum.GetValues(typeof(typFoo))
.Cast()
.ToDictionary(t => (int)t, t => t.ToString() );
Пример с generic-методом для enum
http://stackoverflow.com/questions/79126/create-generic-method-constraining-t-to-an-enum
public T GetEnumFromString(string value) where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
{
throw new ArgumentException("T must be an enumerated type");
}
//...
}
public abstract class EnumClassUtils
where TClass : class
{
public static TEnum Parse(string value)
where TEnum : struct, TClass
{
return (TEnum) Enum.Parse(typeof(TEnum), value);
}
}
public class EnumUtils : EnumClassUtils
{
}
Наконец, собранное воедино — generic-метод, преобразующий enum к словарю на нужном языке. Может быть, надо доработать.
public static Dictionary TranslateEnum() where TEnum : struct, IConvertible
{
if (!typeof(TEnum).IsEnum)
{
throw new ArgumentException("TEnum must be an enumerated type");
}
var lang = typeof(MyLangStrings);
var dict = Enum.GetValues(typeof(TEnum))
.Cast()
.ToDictionary(t => (int)Enum.Parse(typeof(TEnum), t.ToString()), t =>
{
var p = lang.GetProperty(t.ToString());
return p.GetValue(p.DeclaringType, null).ToString();
});
return dict;
}