private ViewResult InvokeViewShared(string viewType, object model = null, string viewName = null) { Stack parameters = new Stack(); if (model == null) { if (viewName == null) { } else { parameters.Push(viewName); } } else { if (viewName == null) { parameters.Push(model); } else { parameters.Push(viewName); parameters.Push(model); } } return (ViewResult)_controller.GetType().GetMethod(viewType, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic, null, parameters.Cast<Object>().Select(p => p.GetType()).ToArray(), null).Invoke(_controller, parameters.ToArray()); }