Example #1
0
 public AddinConfigureEntityKey(string classFullName, string methodName, EnumInterceptorType type)
 {
     _classFullName = classFullName;
     _methodName    = methodName;
     _type          = type;
 }
Example #2
0
        /// <summary>
        /// 根据调用信息获取注入信息
        /// </summary>
        /// <param name="methodName"></param>
        /// <param name="args"></param>
        /// <param name="target"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static MethodAroundBizModel GetPluginConfigure(string methodName, object[] args, object target, EnumInterceptorType type)
        {
            AddinConfigureEntityKey entityKey = new AddinConfigureEntityKey
                                                    (target.ToString(), methodName, type);

            //取不到配置信息
            var entitys = AddinConfigure.GetPluginConfigure(entityKey);

            if (entitys.Count == 0)
            {
                return(null);
            }

            //如果只有一个则直接返回
            if (entitys.Count == 1)
            {
                return(entitys[0]);
            }

            foreach (var entity in entitys)
            {
                //如果判断
                var service = AddinCache.GetService(entity.MstModel.TargetServiceId);
                if (service == null)
                {
                    LogHelper <AddinServiceModel> .Info("In AddinConfigure GetPluginConfigure method 通过addin_method_m中的servicePHid未能取得对应的service");

                    return(null);
                }

                string matchCondition = service.MatchCondition;
                //如果不存在条件则直接返回
                if (string.IsNullOrEmpty(matchCondition))
                {
                    continue;
                }

                string[] eles = matchCondition.Split(new char[] { ':' });
                if (eles.Length != 2)
                {
                    LogHelper <AddinServiceModel> .Info("In AddinConfigure GetPluginConfigure method 条件定义出错" + matchCondition);

                    continue;
                }
                int index = -1;
                if (!int.TryParse(eles[0].Trim(), out index))
                {
                    LogHelper <AddinServiceModel> .Info("In AddinConfigure GetPluginConfigure method 条件定义出错" + matchCondition);

                    continue;
                }

                if (index < 0 || index > args.Length)
                {
                    LogHelper <AddinServiceModel> .Info("In AddinConfigure GetPluginConfigure method 条件定义出错" + matchCondition);

                    continue;
                }
                if (args[index] == null)
                {
                    LogHelper <AddinServiceModel> .Info(string.Format("In AddinConfigure GetPluginConfigure args{0} is null", index));

                    continue;
                }

                if (!args[index].ToString().Equals(eles[1], StringComparison.OrdinalIgnoreCase))
                {
                    LogHelper <AddinServiceModel> .Info(string.Format("In AddinConfigure GetPluginConfigure args{0} is {1},MatchCondition value {2}", index, args[index].ToString(), eles[1]));

                    continue;
                }
                return(entity);
            }

            return(null);
        }