public string CallResourceServiceParams(string resourceName, string serviceName, params object[] parameters) { var serviceParameterModels = new List <ServiceParameterModel>(); if (parameters == null) { return(CallResourceService(resourceName, serviceName, "")); } foreach (var parameter in parameters) { var serviceParameterModel = new ServiceParameterModel { Value = parameter.GetType().IsArray ? ((object[])parameter).Select(a => a.ToString()).Aggregate("", (result, member) => result += member + ",") : parameter.ToString(), Type = parameter.GetType().Name }; serviceParameterModels.Add(serviceParameterModel); } var serializeObject = JsonConvert.SerializeObject(serviceParameterModels); return(CallResourceService(resourceName, serviceName, serializeObject)); }
public JsonResult SaveServiceParameter(ServiceParameterModel parameter) { var dbServiceParam = _dataProvider.GetServiceParameter(parameter.Id) ?? new ServiceParameter(); var entity = _serviceParamMapper.MapToEntity(parameter, ref dbServiceParam); _dataProvider.SaveServiceParameter(entity); return(Json(entity.Id)); }
/// <summary> /// 初始化资源服务名称和对应接收参数类型,sunjian 2020/8/3 长春 /// </summary> /// <exception cref="Exception"></exception> private void InitializeResourceServiceModels() { try { var methodInfos = GetType().GetMethods(); foreach (var methodInfo in methodInfos) { var callResourceServiceAttribute = (ResourceServiceAttribute)Attribute.GetCustomAttribute(methodInfo, typeof(ResourceServiceAttribute)); if (callResourceServiceAttribute == null) { continue; } var serviceParameterModels = new List <ServiceParameterModel>(); var parameterInfos = methodInfo.GetParameters(); var count = 0; var initParameters = callResourceServiceAttribute.ServiceParameters; var serviceParametersLength = initParameters?.Length; if (serviceParametersLength > 0 && parameterInfos.Length != serviceParametersLength) { throw new Exception( $"方法:[{methodInfo.DeclaringType}].[{methodInfo.Name}]接收[{parameterInfos.Length}]个参数,CallResourceService特性传入初始值:[{serviceParametersLength}]个参数"); } foreach (var parameterInfo in parameterInfos) { var parameterInitValue = ""; if (serviceParametersLength > 0) { if (initParameters[count].GetType() != parameterInfo.ParameterType) { throw new Exception( $"CallResourceService特性中传入参数初始值:[{parameterInfo.Name}]:[{initParameters[count]}]类型不匹配,方法名:[{methodInfo.DeclaringType}].[{methodInfo.Name}]。"); } parameterInitValue = initParameters[count].ToString(); } var serviceParameterModel = new ServiceParameterModel { Name = parameterInfo.Name, Type = parameterInfo.ParameterType.Name, Value = parameterInitValue }; serviceParameterModels.Add(serviceParameterModel); count++; } _resourceServiceModels.Add(new ResourceServiceModel { //设置资源参数别名 Name = methodInfo.Name, Parameters = serviceParameterModels }); } } catch (Exception e) { Log.Error($"{ResourceName} 初始化ResourceServiceModel失败,异常为:{e}"); } }