public System.Type DeclareEnum(TypeBuilder module, string name, IEnumerable<string> values)
{
var enumType = module.DefineNestedType(name, TypeAttributes.NestedPublic | TypeAttributes.Sealed, typeof(Enum));
enumType.DefineField("value__", typeof(int), FieldAttributes.Private | FieldAttributes.SpecialName);
var i = 0;
foreach (var value in values)
{
FieldBuilder field = enumType.DefineField(value.ToString(), enumType, FieldAttributes.Public | FieldAttributes.Literal | FieldAttributes.Static);
field.SetConstant(i++);
}
return enumType.CreateType();
}