Se me ocurre algo así :
interface IExcelVariablePosition {
string getValue();
}
class Cartera : IExcelVariablePosition {
public getValue() {
return "11";
}
}
class Lanzamientos : IExcelVariablePosition {
public getValue() {
return "4";
}
}
class Helper {
public static IExcelVariablePosition GetInstance(string pTypeName)
{
Type type = System.Type.GetType(pTypeName);
return (IExcelVariablePosition)
Activator.CreateInstance(type);
}
}
La llamada para obtener el valor sería :
Helper.GetInstance(VariableEnum.ToString()).getValue();
La única desventaja que veo es que habría que crear una clase por cada
ExcelVariablePosition.
2009/8/4 Diego Jancic <[email protected]>
> Como solucion facil podes usar atributos en los items del enum, aunque
> es bastante intrusivo.
> Todo depende de donde se use VariableEnum, si es solo ahi o es una
> entidad del negocio (espero que no! ;-)
>
> Saludos
>
>
> 2009/8/4 Leandro Tuttini <[email protected]>:
> > 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/
>