C # Программно сделать enum - PullRequest
0 голосов
/ 21 ноября 2018

Я хотел бы спросить, есть ли какой-нибудь метод для создания enum со строковым массивом.

Например, обычно мы делаем enum следующим образом.

public enum Temp {
    aa = 0,
    bb,
    cc,
    dd
}

Что я хочу знать, так это, как преобразовать массив строк в перечисление программно.

String[] Temp = { aa, bb, cc, dd }

выше одного (строка [] в перечисление).

возможно ли это?

если тогда, как я могу это сделать?

1 Ответ

0 голосов
/ 21 ноября 2018

Мне было бы интересно, что вы хотели бы сделать с этим, но вы можете создать новый тип enum во время выполнения.

    private static Type BuildEnum(string[] enumValues, string enumName)
    {
        AssemblyName aName = new AssemblyName("TempAssembly");
        AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly(
            aName, AssemblyBuilderAccess.RunAndSave);

        var eb = ab.DefineDynamicModule(aName.Name, aName.Name + ".dll").DefineEnum(enumName, TypeAttributes.Public, typeof(int));

        for (int i = 0; i < enumValues.Length; i++)
        {
            eb.DefineLiteral(enumValues[i], i);
        }
        return eb.CreateType();
    }

 var myEnum = BuildEnum(new string[] { "aa", "bb", "cc", "dd" }, "Temp");
 var enumValues = Enum.GetValues(myEnum)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...