valor tipo sirve que programacion para informatica estructura español enumerado enum c#

c# - sirve - tipo enum java



Crear dinámicamente una enumeración (2)

Tengo una enumeración de la siguiente estructura:

public enum DType { LMS = 0, DNP = -9, TSP = -2, ONM = 5, DLS =9, NDS = 1 }

Estoy usando esta enumeración para obtener los nombres y los valores. Dado que hay un requisito para agregar más tipos, necesito leer el tipo y los valores de un archivo XML. ¿Hay alguna manera por la cual pueda crear esta enumeración dinámicamente desde un archivo XML para poder conservar la estructura del programa?


Probablemente, deberías considerar usar un Dictionary<string, int> lugar.

Si desea generar la enum en tiempo de compilación de forma dinámica, es posible que desee considerar T4 .


Utilice EnumBuilder para crear enumeraciones dinámicamente. Esto requeriría el uso de la reflexión.

PASO 1: CREACIÓN DE ENUM UTILIZANDO ASSEMBLY / ENUM BUILDER

// Get the current application domain for the current thread. AppDomain currentDomain = AppDomain.CurrentDomain; // Create a dynamic assembly in the current application domain, // and allow it to be executed and saved to disk. AssemblyName aName = new AssemblyName("TempAssembly"); AssemblyBuilder ab = currentDomain.DefineDynamicAssembly(aName, AssemblyBuilderAccess.RunAndSave); // Define a dynamic module in "TempAssembly" assembly. For a single- // module assembly, the module has the same name as the assembly. ModuleBuilder mb = ab.DefineDynamicModule(aName.Name, aName.Name + ".dll"); // Define a public enumeration with the name "Elevation" and an // underlying type of Integer. EnumBuilder eb = mb.DefineEnum("Elevation", TypeAttributes.Public, typeof(int)); // Define two members, "High" and "Low". eb.DefineLiteral("Low", 0); eb.DefineLiteral("High", 1); // Create the type and save the assembly. Type finished = eb.CreateType(); ab.Save(aName.Name + ".dll");

PASO 2: UTILIZANDO EL ENUM CREADO

System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom("TempAssembly.dll"); System.Type enumTest = ass.GetType("Elevation"); string[] values = enumTest .GetEnumNames();

Espero que ayude