internal static ActionResult File(this Controller controller, Stream stream) { //use reflection to call protected method :( var obj = controller.GetType().InvokeMember("File" , (Reflection.BindingFlags.InvokeMethod | Reflection.BindingFlags.NonPublic | Reflection.BindingFlags.Instance) , Type.DefaultBinder , controller , new object[] { stream, @"application/pdf" }); return((ActionResult)obj); }
public static T InvokeOnActionExecuting <T>(this System.Web.Mvc.Controller controller, Expression <Func <T> > exp) where T : ActionResult { var method = ((MethodCallExpression)exp.Body).Method; ControllerDescriptor controllerDescriptor = new ReflectedControllerDescriptor(controller.GetType()); ActionDescriptor actionDescriptor = new ReflectedActionDescriptor(method, method.Name, controllerDescriptor); var actionContext = new ActionExecutingContext(controller.ControllerContext, actionDescriptor, new Dictionary <string, object>()); MethodInfo onActionExecuting = controller.GetType().GetMethod("OnActionExecuting", BindingFlags.Instance | BindingFlags.NonPublic); onActionExecuting.Invoke(controller, new object[] { actionContext }); return((T)actionContext.Result); }