/// <summary> /// 根据一个Action的调用信息(类名与方法名),返回内部表示的调用信息。 /// </summary> /// <param name="pair"></param> /// <returns></returns> public static InvokeInfo GetActionInvokeInfo(ControllerActionPair pair, HttpRequest request) { if (pair == null) { throw new ArgumentNullException("pair"); } InvokeInfo vkInfo = new InvokeInfo(); vkInfo.Controller = GetServiceController(pair.Controller); if (vkInfo.Controller == null) { return(null); } vkInfo.Action = GetServiceAction(vkInfo.Controller.ControllerType, pair.Action, request); if (vkInfo.Action == null) { return(null); } if (vkInfo.Action.MethodInfo.IsStatic == false) { //vkInfo.Instance = Activator.CreateInstance(vkInfo.Controller.ControllerType); vkInfo.Instance = vkInfo.Controller.ControllerType.FastNew(); } return(vkInfo); }
/// <summary> /// 根据一个页面请求路径,返回内部表示的调用信息。 /// </summary> /// <param name="url"></param> /// <returns></returns> public static InvokeInfo GetActionInvokeInfo(string url) { if (string.IsNullOrEmpty(url)) { throw new ArgumentNullException("url"); } MatchActionDescription md = null; ActionDescription action = null; // 先直接用URL从字典中查找匹配项。 if (s_PageActionDict.TryGetValue(url, out action) == false) { // 如果不能直接匹配URL,就用正则表达式再逐个匹配。 md = GetActionUsingRegex(url); if (md == null) { return(null); } else { action = md.ActionDescription; } } InvokeInfo vkInfo = new InvokeInfo(); vkInfo.Controller = action.PageController; vkInfo.Action = action; if (md != null) { vkInfo.RegexMatch = md.Match; } if (vkInfo.Action.MethodInfo.IsStatic == false) { //vkInfo.Instance = Activator.CreateInstance(vkInfo.Controller.ControllerType); vkInfo.Instance = vkInfo.Controller.ControllerType.FastNew(); } return(vkInfo); }