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]); }
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(); } }