Hola Leandro, El Enum lo dejaria como esta, la clase la haria asi: internal class ExcelVariablePosition { HashTable posiciones = new HashTable();
public ExcelVariablePosition() { posiciones[VariableEnum.Cartera] = "11"; posiciones[VariableEnum.Cartera12Meses = "12"; posiciones[VariableEnum.CoberturaMeses = "13"; posiciones[VariableEnum.CategorizacionOtros = return "14"; posiciones[VariableEnum.NivelEjecucionPortfolio = "15"; posiciones[VariableEnum.Profolio = "18"; ... // Eventualmente aca podrias recorrer todos los valores de emun y asegurarte de que // esten en el hashtable, eso te va a prevenir ante olvidos. } public string GetValueByType(VariableEnum var) { return posiciones[var]; } } A proposito estoy dejando fuera las propiedades porque te obliga a repetir (cada enum que agregas tenes que agregar una propiedad con el mismo nombre), cosa que casi siempre es mala, sin mencionar que si te pider que la lista sea definida por configuracion, sonaste. Un abrazo Carlos Peix _____ De: puntonet@mug.org.ar [mailto:punto...@mug.org.ar] En nombre de Leandro Tuttini Enviado el: Martes, 04 de Agosto de 2009 12:07 p.m. Para: puntonet@mug.org.ar Asunto: [puntonet] Optimizar codigo - reemplazar switch hola, la verdad tengo una consulta basada en un codigo que implemente que no me gusta para nada como quedo, pero no se me ocurre muy bien como optimizarlo. El codigo que tengo es el siguiente: enum VariableEnum { Profolio = 1, Kits = 2, Facturación = 3, Lanzamientos = 4, AccionesEspeciales = 5, Compras = 7, Cartera12Meses = 8, CoberturaMeses = 9, CategorizacionOtros = 10, NivelEjecucionPortfolio = 12, Cartera = 13 } internal class ExcelVariablePosition { public string Cartera { get { return "11"; } } public string Cartera12Meses { get { return "12"; } } public string CoberturaMeses { get { return "13"; } } public string CategorizacionOtros { get { return "14"; } } public string NivelEjecucionPortfolio { get { return "15"; } } public string Profolio { get { return "18"; } } public string Lanzamientos { get { return "20"; } } public string Kits { get { return "22"; } } public string AccionesEspeciales { get { return "24"; } } public string Compras { get { return "26"; } } public string Facturación { get { return "30"; } } #region GetValueByType public string GetValueByType(VariableEnum var) { string valor = ""; switch (var) { case VariableEnum.Cartera: valor = this.Cartera; break; case VariableEnum.Cartera12Meses: valor = this.Cartera12Meses; break; case VariableEnum.CoberturaMeses: valor = this.CoberturaMeses; break; case VariableEnum.CategorizacionOtros: valor = this.CategorizacionOtros; break; case VariableEnum.NivelEjecucionPortfolio: valor = this.NivelEjecucionPortfolio; break; case VariableEnum.Profolio: valor = this.Profolio; break; case VariableEnum.Lanzamientos: valor = this.Lanzamientos; break; case VariableEnum.Kits: valor = this.Kits; break; case VariableEnum.AccionesEspeciales: valor = this.AccionesEspeciales; break; case VariableEnum.Compras: valor = this.Compras; break; case VariableEnum.Facturación: valor = this.Facturación; break; } return valor; } #endregion } como veran se trata de un enum, y segun este obtengo posiciones que luego seran utilizadas como veran en Excel para ubicar cierto dato. Se puede recuperar tanto por enum, como por acceso a la propeidad directamente. Basicamente la clase me resuelve posicionamiento en el excel, el procesamiento se realiza en otro lado, utilizando la info de esta clase. la pregunta es se puede eliminar el switch gigante ? Si se que diran que las posiciones tan fijas en el codigo, porque no utilizo un archivo de configuracion y las leo de ahi, lo habia pensado, pero no se si vale la pena arma seccion en el config para algo que una vez terminado nunca mas se movera de lugar en el excel, y si algo cambia compilar y hacer un deploy de la dll cuenta nada. gracias saludos _____ Encontra las mejores recetas con Yahoo! Cocina. http://ar.mujer.yahoo.com/cocina/