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/

Responder a