public override ActionParameterInfo[] GetActionParametersInfo(IStateKey stateKey, IActionKey actionKey) { string[] parameterNames = {}; var stateData = m_StateManager.GetStateData((StateEntityKey)stateKey, false); switch (((IActionKeyWithGuid)actionKey).ActionGuid) { case var actionGuid when actionGuid == ActionScheduler.CollectGuid: parameterNames = Collect.parameterNames; break; case var actionGuid when actionGuid == ActionScheduler.NavigateGuid: parameterNames = Navigate.parameterNames; break; } var parameterInfo = new ActionParameterInfo[parameterNames.Length]; for (var i = 0; i < parameterNames.Length; i++) { var traitBasedObjectId = stateData.GetTraitBasedObjectId(((ActionKey)actionKey)[i]); #if DEBUG parameterInfo[i] = new ActionParameterInfo { ParameterName = parameterNames[i], TraitObjectName = traitBasedObjectId.Name.ToString(), TraitObjectId = traitBasedObjectId.Id }; #else parameterInfo[i] = new ActionParameterInfo { ParameterName = parameterNames[i], TraitObjectName = traitBasedObjectId.ToString(), TraitObjectId = traitBasedObjectId.Id }; #endif } return(parameterInfo); }
private static List <ActionParameterInfo> GetActionParameters(MethodInfo action) { var result = new List <ActionParameterInfo>(); var parameters = action.GetParameters(); foreach (var parameterInfo in parameters) { var param = new ActionParameterInfo(); param.Name = parameterInfo.Name; param.Type = TypeConverter.GetTypeScriptName(parameterInfo.ParameterType); var bind = parameterInfo.GetCustomAttributes <BindAttribute>().FirstOrDefault(); if (bind != null) { param.Name = bind.Prefix ?? param.Name; } var fromBody = parameterInfo.GetCustomAttributes <FromBodyAttribute>().FirstOrDefault(); // Parameters are from the URL unless specified by a [FromBody] attribute. param.FromUri = fromBody == null; //TODO: Support route parameters that are not 'id', might be hard as will need to parse routing setup if (parameterInfo.Name.Equals("id", StringComparison.OrdinalIgnoreCase)) { param.RouteProperty = true; } param.Name = param.Name.ToCamelCase(); result.Add(param); } return(result); }
private static List <ActionParameterInfo> GetActionParameters(MethodInfo action) { var result = new List <ActionParameterInfo>(); var parameters = action.GetParameters(); foreach (var parameterInfo in parameters) { var param = new ActionParameterInfo(); param.Name = param.OriginalName = parameterInfo.Name; param.Type = TypeConverter.GetTypeScriptName(parameterInfo.ParameterType); var bindAttribute = parameterInfo.GetCustomAttributes <BindAttribute>().FirstOrDefault(); if (bindAttribute != null) { param.Name = bindAttribute.Prefix ?? param.Name; } var fromBody = parameterInfo.GetCustomAttributes <FromBodyAttribute>().FirstOrDefault(); // Parameters are from the URL unless specified by a [FromBody] attribute. param.FromUri = fromBody == null; param.Name = param.Name.ToCamelCase(); result.Add(param); } return(result); }
public override IActionParameterInfo[] GetActionParametersInfo(IStateKey stateKey, IActionKey actionKey) { string[] parameterNames = {}; var stateData = m_StateManager.GetStateData((StateEntityKey)stateKey, false); switch (((IActionKeyWithGuid)actionKey).ActionGuid) { case var actionGuid when actionGuid == ActionScheduler.MoveDownGuid: parameterNames = MoveDown.parameterNames; break; case var actionGuid when actionGuid == ActionScheduler.MoveLeftGuid: parameterNames = MoveLeft.parameterNames; break; case var actionGuid when actionGuid == ActionScheduler.MoveRightGuid: parameterNames = MoveRight.parameterNames; break; case var actionGuid when actionGuid == ActionScheduler.MoveUpGuid: parameterNames = MoveUp.parameterNames; break; case var actionGuid when actionGuid == ActionScheduler.PickupKeyGuid: parameterNames = PickupKey.parameterNames; break; case var actionGuid when actionGuid == ActionScheduler.UseDoorLeftGuid: parameterNames = UseDoorLeft.parameterNames; break; case var actionGuid when actionGuid == ActionScheduler.UseDoorRightGuid: parameterNames = UseDoorRight.parameterNames; break; case var actionGuid when actionGuid == ActionScheduler.UseGateUpGuid: parameterNames = UseGateUp.parameterNames; break; } var parameterInfo = new IActionParameterInfo[parameterNames.Length]; for (var i = 0; i < parameterNames.Length; i++) { var traitBasedObjectId = stateData.GetTraitBasedObjectId(((ActionKey)actionKey)[i]); #if DEBUG parameterInfo[i] = new ActionParameterInfo { ParameterName = parameterNames[i], TraitObjectName = traitBasedObjectId.Name.ToString(), TraitObjectId = traitBasedObjectId.Id }; #else parameterInfo[i] = new ActionParameterInfo { ParameterName = parameterNames[i], TraitObjectName = traitBasedObjectId.ToString(), TraitObjectId = traitBasedObjectId.Id }; #endif } return(parameterInfo); }
public static List <ActionParameterInfo> GetActionParameters(MethodInfo action) { var result = new List <ActionParameterInfo>(); var parameters = action.GetParameters(); foreach (var parameterInfo in parameters) { var param = new ActionParameterInfo(); param.Name = parameterInfo.Name; param.Type = TypeConverter.GetTypeScriptName(parameterInfo.ParameterType); if (parameterInfo.ParameterType.IsEnum) { param.Type = "Enums." + param.Type; } var bind = parameterInfo.GetCustomAttributes(false) .FirstOrDefault(a => a.GetType().FullName == "Microsoft.AspNetCore.Mvc.BindAttribute"); if (bind != null) { param.Name = (bind.GetPropertyValue("Prefix") as string) ?? param.Name; } var fromBody = parameterInfo.GetCustomAttributes(false) .FirstOrDefault(a => a.GetType().FullName == "Microsoft.AspNetCore.Mvc.FromBodyAttribute"); // Parameters are from the URL unless specified by a [FromBody] attribute. param.FromUri = fromBody == null; //TODO: Support route parameters that are not 'id', might be hard as will need to parse routing setup if (parameterInfo.Name.Equals("id", StringComparison.OrdinalIgnoreCase)) { param.RouteProperty = true; } param.Name = param.Name.ToCamelCase(); param.ClrType = parameterInfo.ParameterType; result.Add(param); } return(result); }
public List <ActionParameterInfo> GetActionParameters(Type request, ServiceStackRouteInfo routeInfo) { var result = new List <ActionParameterInfo>(); foreach (var parameter in routeInfo.RouteParameters) { var param = new ActionParameterInfo(); var property = request.GetProperty(parameter) ?? request.GetProperty(parameter.ToPascalCase()); param.Name = property?.Name ?? parameter; param.Type = property == null ? "any" : TypeConverter.GetTypeScriptName(property.PropertyType); if (property != null && (property.PropertyType.IsEnum || Nullable.GetUnderlyingType(property.PropertyType)?.IsEnum == true)) { param.Type = "Enums." + param.Type; } param.FromUri = true; param.ClrType = property?.PropertyType; param.Name = (property?.Name ?? parameter).ToCamelCase(); result.Add(param); } return(result); }