Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C以编程方式生成枚举_C#_.net_Enums - Fatal编程技术网

C# C以编程方式生成枚举

C# C以编程方式生成枚举,c#,.net,enums,C#,.net,Enums,我想问一下,是否有任何方法可以使用字符串数组生成枚举 例如,我们通常这样创建enum public enum Temp { aa = 0, bb, cc, dd } 我想知道的是,如何以编程方式将字符串数组转换为枚举 String[] Temp = { aa, bb, cc, dd } 到上面一个字符串[]到枚举 可能吗 如果是这样的话,我该怎么做呢?我很好奇您想用它做什么,但是您可以在运行时创建一个新的枚举类型 private static Type

我想问一下,是否有任何方法可以使用字符串数组生成枚举

例如,我们通常这样创建enum

public enum Temp {
    aa = 0,
    bb,
    cc,
    dd
}
我想知道的是,如何以编程方式将字符串数组转换为枚举

String[] Temp = { aa, bb, cc, dd }
到上面一个字符串[]到枚举

可能吗


如果是这样的话,我该怎么做呢?

我很好奇您想用它做什么,但是您可以在运行时创建一个新的枚举类型

    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)

请非常具体,是否要将字符串数组转换为枚举数组。还是要基于字符串数组创建新的枚举?在后一种情况下,它没有任何意义。你会如何为它编写更多的代码呢。我猜您想要的是一个字典。您不能以编程方式创建枚举,因为枚举是在编译时创建的,而您的程序直到运行时才运行。这感觉像是XY问题-。为什么要这样做?字典很可能会根据您的需要,例如用法var myInt=myDict[aa]或ifsomeValue==myDict[someKeyFormArray]等。是的,您可以通过编程方式执行此操作。你必须研究System.CodDom有一大堆材料需要涵盖,所以我没有写一个问题的答案。这很聪明,但我不明白在运行时这么做的价值。我想让OP解释为什么这对他们很重要。