public IResultado <IList <Especialidad> > Filtrar(FiltroEspecialidad filtro)
        {
            Resultado <IList <Especialidad> > resultado = new Resultado <IList <Especialidad> >();

            try
            {
                resultado.Retorno = _domain.Filtrar(filtro);
            }
            catch (Exception ex)
            {
                resultado.Correcto = false;
                resultado.Mensajes.Add(ex.Message);
            }
            return(resultado);
        }
        private FiltroEspecialidad CrearFiltro()
        {
            FiltroEspecialidad filtro = new FiltroEspecialidad();

            if (chEspecialidad.Checked)
            {
                var tipo = cbTipoEspecialidad.SelectedItem as TipoEspecialidad;
                if (tipo != null)
                {
                    filtro.IdTipoEspecialidad = tipo.Id;
                }
            }
            if (!string.IsNullOrEmpty(tbNombreEspecialidad.Text))
            {
                filtro.Nombre = tbNombreEspecialidad.Text;
            }
            return(filtro);
        }
        protected override void AccionFiltrar()
        {
            FiltroEspecialidad filtro = CrearFiltro();

            try
            {
                IResultado <IList <Especialidad> > filtrar = _domain.Filtrar(filtro);
                if (!filtrar.Correcto)
                {
                    throw new ResultadoIncorrectoException <IList <Especialidad> >(filtrar);
                }

                this.dgvBusqueda.DataSource = filtrar.Retorno;
                this.dgvBusqueda.Columns["TipoEspecialidad"].Visible = false;
            }
            catch (ResultadoIncorrectoException <IList <Especialidad> > ex)
            {
                MensajePorPantalla.MensajeError(this, ex.Message);
            }

            this.dgvBusqueda.Columns["IdEspecialidad"].Visible = false;
        }