SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: mx_latino en Jueves 29 de Mayo de 2008, 19:50

Título: Enum Dinamico
Publicado por: mx_latino en Jueves 29 de Mayo de 2008, 19:50
Hola otra vez!!

Las enumeraciones en C# son muy utiles cuando se tienen opciones fijas como tamaños o colores, etc... pero quisiera saber si hay alguna forma de crear enumeraciones dinamicas...

Por ejemplo que yo tubiera una enumeracion definida como

Código: Text
  1.  
  2.  public enum Size
  3.         {
  4.             Small,
  5.             Large,
  6.         }
  7.  
  8.  

Pero que durante la ejecucion o la invocacion, si esta estuviera en un UserControl
yo pueda agregarle mas items.. como Medium, etc...
Título: Re: Enum Dinamico
Publicado por: ProfesorX en Viernes 30 de Mayo de 2008, 22:53
No es posible hacer eso.
Título: Re: Enum Dinamico
Publicado por: JuanK en Sábado 31 de Mayo de 2008, 04:38
Es totalmente posible utilizando System.Reflection pero  no es facil.

Por otro lado lo que quieres hacer es totalmente inutil... si te explicas mejor respecto a lo que quieres  te podran brindar mejor asesoria
Título: Re: Enum Dinamico
Publicado por: E.Baley en Sábado 31 de Mayo de 2008, 12:35
Para establecer valores de enums mediante reflection puedes leerte http://www.codeproject.com/KB/cs/SetEnumWithReflection.aspx (http://www.codeproject.com/KB/cs/SetEnumWithReflection.aspx)

pero como dice JuanK seguramente es mucho mejor usar un List<string> o cualquier otro método para establecer los items de tu UserControl.
Título: Re: Enum Dinamico
Publicado por: JuanK en Sábado 31 de Mayo de 2008, 15:17
Claro, pero es necesario saber que 4es lo que quieres hacer.

Un StringDictionary me pareceria perfecto pero como no sabemos puntualmente que es lo que quieres...
Título: Re: Enum Dinamico
Publicado por: ProfesorX en Sábado 31 de Mayo de 2008, 19:53
Vaya, no sabia que se pudiera hacer, se aprende algo nuevo cada dia :)

Gracias JuanK y E.Baley
Título: Re: Enum Dinamico
Publicado por: mx_latino en Lunes 2 de Junio de 2008, 23:11
Digamos que quiero crear un componente que me servira para obtener diferentes mensajes y que el mensaje que va a lanzar sera de acuerdo a un parametro, el mismo provendra de una "enumeracion dinamica" la cual se alimentara de los registro que sean necesarios y que estaran almacenados en una Tabla de mi DB llamada Mensages que contenga los campos: Nombre y Definicion; y que conforme yo agregue registros a mi Table la enumeracion sola se acople... entonces cualquiera que vaya a usar mi componente podra ver todos los mensajes disponibles y seran tantos como registros en mi tabla......  

Entonce bastaria con la dll del componente y la Tabla para poder obtener la lista de mensajes... Todo esto porq se trabaja en equipos de programacion y estoy encargado de crear componentes y UserControls para que los demas solo usen las dlls de forma directa....

NO  SE SI LOGRO EXPLICAR LA IDEA......  ;)
Título: Re: Enum Dinamico
Publicado por: JuanK en Martes 3 de Junio de 2008, 00:32
no le veo ninguna funcionalidad a la enumeración dinámica. Eso lo hacer muchisimo mejor con un StringDictionary
Título: Re: Enum Dinamico
Publicado por: mx_latino en Martes 3 de Junio de 2008, 01:04
Compadre resulta que con un enum tu pones Color.RojoSangre y con el StringDictionary tendrias que poner Color.[1] o Color["RojoSangre"] y que ocurre si el que va a utilizar el componente no sabe el INDEX o el NOMBRE EXACTO de el color que quiere usar???   :(   Es por eso necesito enumeraciones porq solo entonces el que usaria mi componente y quiera pasar un parametro que sea un item de un enum al momento de poner NombreDelEnum. tendria una lista con todos los nombres a escoger!!!! pero necesito que esa lista de nombres sea dinamica para que una vez compilado mi componente ese cree automaticamente tantos items en el enum como registro en mi DB....   :blink:
Título: Re: Enum Dinamico
Publicado por: beka969 en Martes 10 de Agosto de 2010, 21:45
Hola mi estimado,
tengo el mismo problema que tu estoy creando un componente que al igual que el tuyo se llena desde mi base de datos, y nesesito crear un enum dinamico, apenas estoy checando el link que te mandaron, pero si me das un consejillo de por donde llegarle te lo agradesco

gracias :good: