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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        /// <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}");
            }
        }