Пример про локализацию
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; }