当前位置: 首页 > 编程语言 > C#

动态创建枚举分享

时间:2023-04-10 16:34:59 C#

动态创建枚举我有一个具有以下结构的枚举:publicenumDType{LMS=0,DNP=-9,TSP=-2,ONM=5,DLS=9,NDS=1}我正在使用这个枚举来获取名称和值。由于需要添加更多的类型,我需要从一个XML文件中读取类型和值。有什么方法可以从XML文件动态创建此枚举,以便我可以保留程序结构。也许你应该考虑使用字典。如果你想在编译时动态生成枚举,你可能需要考虑T4。使用EnumBuilder动态创建枚举。这需要使用反射。第1步:使用ASSEMBLY/ENUMBUILDER创建枚举//获取当前线程的当前应用程序域。AppDomaincurrentDomain=AppDomain.CurrentDomain;//在当前应用程序域中创建一个动态程序集,//并允许它执行并保存到磁盘。AssemblyNameaName=newAssemblyName("TempAssembly");AssemblyBuilderab=currentDomain.DefineDynamicAssembly(aName,AssemblyBuilderAccess.RunAndSave);//在“TempAssembly”程序集中定义一个动态模块。对于单模块程序集,//模块与程序集同名。ModuleBuildermb=ab.DefineDynamicModule(aName.Name,aName.Name+".dll");//使用名称“Elevation”和//基础类型Integer定义一个公共枚举。EnumBuildereb=mb.DefineEnum("高程",TypeAttributes.Public,typeof(int));//定义两个成员,“High”和“Low”。eb.DefineLiteral("低",0);eb.DefineLiteral("高",1);//创建类型并保存程序集。输入完成=eb.CreateType();ab.Save(aName.Name+".dll");第2步:使用创建的枚举System.Reflection.Assemblyass=System.Reflection.Assembly.LoadFrom("TempAssembly.dll");System.TypeenumTest=ass.GetType("Elevation");string[]values=enumTest.GetEnumNames();希望对大家有所帮助,需要了解更多C#学习教程,希望大家多多关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: