Quantcast
Channel: Crear Instancias de clases que implementan una Interfaz
Viewing all articles
Browse latest Browse all 2

Crear Instancias de clases que implementan una Interfaz

$
0
0

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


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596344.js" async> </script>