Exemplo n.º 1
0
        public void Manipular(HttpListenerResponse resposta, string path)
        {
            var  partes                 = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            var  controllerNome         = partes[0];
            var  actionNome             = partes[1];
            Type type                   = Type.GetType("CursoReflectionDotNet");
            var  controllerNomeCompleto = $"CursoReflectionDotNet.Controller.{controllerNome}Controller";
            var  controllerWrapper      = Activator.CreateInstance(type, controllerNomeCompleto, new object[0]);
            var  controller             = controllerWrapper.Unwrap();
            var  methodInfo             = _actionBinder.ObterMethodInfo(controller, path);

            //var methodInfo = controller.GetType().GetMethod(actionNome);
            methodInfo.Invoke(controller);

            var resultadoAction = (string)methodInfo.Invoke(controller, new object[0]);
        }
Exemplo n.º 2
0
        public void Manipular(HttpListenerResponse resposta, string path)
        {
            var partes         = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            var controllerNome = partes[0];
            var actionNome     = partes[1];

            var controllerNomeCompleto = $"ByteBank.Portal.Controller.{controllerNome}Controller";

            //var controllerWrapper = Activator.CreateInstance("ByteBank.Portal", controllerNomeCompleto, new object[0]);
            //var controller = controllerWrapper.Unwrap();

            var controller = _controllerResolver.ObterController(controllerNomeCompleto);

            //var methodInfo = controller.GetType().GetMethod(actionNome);
            var actionBindInfo = _actionBinder.ObterMethodInfo(controller, path);

            var filterResult = _filterResolver.VerificarFiltros(actionBindInfo);

            if (filterResult.PodeContinuar)
            {
                var resultadoAction = (string)actionBindInfo.Invoke(controller);

                var bufferArquivo = Encoding.UTF8.GetBytes(resultadoAction);
                resposta.StatusCode      = 200;
                resposta.ContentType     = "text/html; charset=uft-8";
                resposta.ContentLength64 = bufferArquivo.Length;

                resposta.OutputStream.Write(bufferArquivo, 0, bufferArquivo.Length);
                resposta.OutputStream.Close();
            }
            else
            {
                resposta.StatusCode       = 307;
                resposta.RedirectLocation = "/Erro/Inesperado";
                resposta.OutputStream.Close();
            }
        }