示例#1
0
 private static void AddApiBindInfos(ApiBindOn apiBindOn, IEnumerable <ApiBindAttribute> apiBindAttrs, string assemblyName, MethodInfo method)
 {
     foreach (var attr in apiBindAttrs)
     {
         AddApiBindInfo(apiBindOn, attr, assemblyName, method);
     }
 }
示例#2
0
        //TODO: 添加 ignore 忽略属性
        //TODO: 根据模块可以进行忽略或开启

        public ApiBindInfo(ApiBindOn apiBindOn, string category, string globalName, string name, Type baseApiControllerType, short baseApiControllerOrder, ApiBindAttribute apiBindAttribute, MethodInfo methodInfo)
        {
            ApiBindOn              = apiBindOn;
            Category               = category;
            GlobalName             = globalName;
            Name                   = name;
            BaseApiControllerType  = baseApiControllerType;
            BaseApiControllerOrder = baseApiControllerOrder;
            ApiBindAttribute       = apiBindAttribute;
            MethodInfo             = methodInfo;
            ClassType              = methodInfo.DeclaringType;
        }
示例#3
0
        private static void AddApiBindInfo(ApiBindOn apiBindOn, ApiBindAttribute apiBindAttr, string assemblyName, MethodInfo method)
        {
            var categoryName = apiBindAttr.GetCategoryName(assemblyName);

            if (!WebApiEngine.ApiAssemblyNames.ContainsKey(categoryName))
            {
                //TODO:可以增加缓存命名空间等更加特殊的前缀
                var dynamicCategory = apiBindAttr.GetDynamicCategory(method, assemblyName);

                var addSuccess = WebApiEngine.ApiAssemblyNames.TryAdd(categoryName, dynamicCategory);
                if (!addSuccess)
                {
                    SenparcTrace.SendCustomLog($"动态API未添加成功!", $"信息:[{categoryName} - {dynamicCategory}]");
                }
            }
            ApiBindInfoCollection.Instance.Add(apiBindOn, categoryName, method, apiBindAttr);
        }
        /// <summary>
        /// 添加 ApiBindInfo 对象
        /// </summary>
        /// <param name="method"></param>
        /// <param name="apiBindAttr"></param>
        public void Add(ApiBindOn apiBindOn, string cagtegory, MethodInfo method, ApiBindAttribute apiBindAttr)
        {
            var category   = apiBindAttr.GetCategoryName(method);
            var name       = apiBindAttr.GetName(method);
            var globalName = GetGlobalName(category, name);

            var finalGlobalName = globalName;
            var suffix          = 0;

            //确保名称不会重复
            while (base.ContainsKey(finalGlobalName))
            {
                suffix++;
                finalGlobalName = globalName + suffix.ToString("00");
            }

            base.Add(finalGlobalName, new ApiBindInfo(apiBindOn, cagtegory, finalGlobalName, name, apiBindAttr.BaseApiControllerType, apiBindAttr.BaseApiControllerOrder, apiBindAttr, method));
        }