public static EnumMapping Create(Type enumType) { if (enumType == null) throw Error.ArgumentNull("enumType"); if (!enumType.IsEnum()) throw Error.Argument("enumType", "Type {0} is not an enumerated type", enumType.Name); var result = new EnumMapping(); result.Name = getEnumName(enumType); result.EnumType = enumType; result._enumToLiteral = new Dictionary<Enum, string>(); result._literalToEnum = new Dictionary<string, Enum>(); foreach(var enumValue in ReflectionHelper.FindEnumFields(enumType)) { var attr = ReflectionHelper.GetAttribute<EnumLiteralAttribute>(enumValue); string literal = enumValue.Name; if (attr != null) literal = attr.Literal; Enum value = (Enum)enumValue.GetValue(null); result._enumToLiteral.Add(value, literal); result._literalToEnum.Add(literal, value); } return result; }