internal List <RequestParameter> GetParameters(List <RequestParameter> parameters, string action, IController controller) { LogController.WriteLog(new ServerLog($"Checking parameter list form action '{controller.GetType().Name}.{action}'...", controller.GetType().Name, action)); if (parameters == null) { return(new List <RequestParameter>()); } string currentObjRpAlias = string.Empty; Object entityParameterObject = this; List <RequestParameter> result = new List <RequestParameter>(); MethodInfo method = controller.GetType().GetMethod(action); foreach (RequestParameter parameter in parameters) { LogController.WriteLog(new ServerLog($"Setting parameter '{parameter.Name}' for action '{controller.GetType().Name}.{action}'...", controller.GetType().Name, action)); string pName = parameter.Name; string pValue = parameter.Value.ToString(); RequestParameter requestParameter = null; foreach (ParameterInfo pInfo in method.GetParameters()) { ObjectRequestParameter objectRequestParameter = GetObjectParameterType(pName, action, controller.GetType().Name); if (objectRequestParameter == null) { if (!pInfo.Name.Equals(pName)) { continue; } } // string objectParameterType = objRP.TypeName; if (objectRequestParameter != null) { if (objectRequestParameter.Alias != currentObjRpAlias || entityParameterObject.GetType().Name.Equals(this.GetType().Name)) { currentObjRpAlias = objectRequestParameter.Alias; ModelRegister model = Server.GlobalInstance.RegisteredModels.FirstOrDefault(m => m.ModeName == objectRequestParameter.TypeName); if (model == null) { LogController.WriteLog(new ServerLog($"Could not instantiate controller '{objectRequestParameter.TypeName}'. Check its mapping XML.", controller.GetType().Name, action, ServerLogType.ERROR)); throw new Exception($"Could not instantiate controller '{objectRequestParameter.TypeName}'. Check its mapping XML."); } Type type = model.ModelType; if (type == null) { LogController.WriteLog(new ServerLog($"Could not instantiate controller '{objectRequestParameter.TypeName}'. Check its mapping XML.", controller.GetType().Name, action, ServerLogType.ERROR)); throw new Exception($"Could not instantiate controller '{objectRequestParameter.TypeName}'. Check its mapping XML."); } entityParameterObject = Activator.CreateInstance(type); string parameterMethodName = pName.Substring(0, pName.IndexOf('.')); requestParameter = new RequestParameter(parameterMethodName, entityParameterObject); } int ptIndex = pName.IndexOf('.') + 1; string propertyName = pName.Substring(ptIndex, pName.Length - ptIndex); ConvertToType(entityParameterObject, propertyName, pValue); continue; } requestParameter = GetRequestParameterFromType(pInfo, pName, pValue); if (requestParameter != null) { break; } } if (requestParameter != null) { result.Add(requestParameter); } } return(result); }
internal void AddParameter(RequestParameter parameter) { requestParameters.Add(parameter); }