Hola a todos
Tengo un método que recibe una implementanción de una interfaz
private Microsoft.Office.Interop.PowerPoint._Slide InsertaTabla(ITabla<ReporteDto> tabla, Microsoft.Office.Interop.PowerPoint._Slide diapositiva) { return tabla.AgregarTablaEnDiapositiva(diapositiva, tabla.RecuperarDatosParaTabla()); }
este método se llama de acuerdo a los datos recuperados en una lista que contienen el código de la sección de reporte
foreach ( ExpRasSecRepAnaSinDto dato in datos ) { ITabla<ReporteDto> tabla = HtInstanciasTabla[dato.CodSecRep]; diapositiva = diapositivas.AddSlide(index, CustomLayoutField); diapositiva = InsertaTabla(HtInstanciasTabla[dato.CodSecRep], slide);
index++; }
Mi problema es al intentar llamar a estas instancias, HtInstanciasTabla pretende ser un diccionario donde tengo codigo de sección y la instancia de una clase que implemente ITabla, digo pretende por que al parecer es esta parte donde estoy haciendo algo mal, que no puedo meter las instancias, es así como lo tengo
private readonly Dictionary<string, ITabla<ReporteDto>> HtInstanciasTabla = new Dictionary<string, ITabla<ReporteDto>>(); public ReporteManagerBl( decimal idCtaAnaSin, decimal idRepAnaSin ) { IdCtaAnaSin = idCtaAnaSin; IdRepAnaSin = idRepAnaSin; HtInstanciasTabla.Add(TipoDeReporte.BALANCE_GENERAL, new TblBalanceGeneralBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.BALANCE_POR_FILIAL, new TblBalancePorFilialBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.COMPORTAMIENTO_MENSUAL, new TblComportamientoMensualBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.SEGMENTACION_POR_CAUSA, new TblSegmentacionPorCausaBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.TIPO_DE_RECLAMACION, new TblTipoDeReclamacionBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.UTILIZACION_POR_PARENTESCO, new TblUtilizacionPorParentescoBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.EPIDEMIOLOGIA, new TblEpidemiologiaBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.EPIDEMIOLOGIA_POR_GENERO, new TblEpidemiologiaPorGeneroBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.USO_HOSPITALARIO, new TblUsoHospitalarioBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.CASOS_MAYORES, new TblCasosMayoresBl(idCtaAnaSin, idRepAnaSin)); HtInstanciasTabla.Add(TipoDeReporte.DETALLE_GENERAL, new TblDetalleGeneralBl(idCtaAnaSin, idRepAnaSin)); }
Esta es la interfaz que implemento
public interface ITabla<TReporteDto> where TReporteDto : ReporteDto { Microsoft.Office.Interop.PowerPoint._Slide AgregarTablaEnDiapositiva( Microsoft.Office.Interop.PowerPoint._Slide diapositiva, IEnumerable<TReporteDto> datos ); IEnumerable<TReporteDto> RecuperarDatosParaTabla(); int NumColumnas { get; } float DistanciaBordeIzq { get; } float DistanciaBordeSup { get; } float AnchoTabla { get; } float EscalaTabla { get; } }
Existe alguna manera de instancias mi ITabla<ReporteDto> sin meter "ifs" en la parte de mi foreach? de antemano muchas gracias