internal object ExecuteRoute(ServiceRoute route, HttpRequest request) { if (!_methods.Any()) { return(null); } var method = _methods.FirstOrDefault(m => { var attribute = m.GetCustomAttribute <RouteAttribute>(true); if (attribute == null) { return(false); } if (request.Params.Any()) { return(attribute.Method == route.Method && attribute.RoutePath == route.RoutePath && m.GetParameters().Length > 0); } else { return(attribute.Method == route.Method && attribute.RoutePath == route.RoutePath); } }); if (method == null) { return(null); } //方法的参数集合 var parameterInfos = method.GetParameters(); //解析后的参数集合 var list = new List <object>(); if (parameterInfos.Any() && request.Params.Any()) { switch (request.Method) { case "GET": ResolveGet(parameterInfos, request, list); break; case "POST": ResolvePost(parameterInfos, request, list); break; } } try { if (parameterInfos.Length != list.Count) { return(JsonError("参数获取失败")); } return(method.Invoke(this, list.ToArray())); } catch (Exception e) { return(JsonError(e.Message)); } }