C# C以编程方式生成枚举
我想问一下,是否有任何方法可以使用字符串数组生成枚举 例如,我们通常这样创建enumC# 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
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解释为什么这对他们很重要。