Пример #1
0
Файл: k.cs Проект: webrot/Kooboo
        private List <MethodViewModel> GetMethod(Type type, string MethodPathBase)
        {
            if (type == typeof(KScriptExtension))
            {
                return(new List <MethodViewModel>());
            }

            var methods = new List <MethodViewModel>();

            var allmethods = Kooboo.Lib.Reflection.TypeHelper.GetPublicMethods(type);

            foreach (var item in allmethods)
            {
                var requirepara = item.GetCustomAttribute(typeof(Kooboo.Attributes.SummaryIgnore));
                if (requirepara == null)
                {
                    var model = new MethodViewModel();
                    model.Name = MethodPathBase + "." + item.Name;
                    var paras = item.GetParameters();
                    foreach (var p in paras)
                    {
                        model.Parameters.Add(p.Name, p.ParameterType.Name);
                    }

                    model.ReturnType = item.ReturnType;

                    if (item.ReturnType != typeof(void))
                    {
                        if (item.ReturnType.IsClass && item.ReturnType != typeof(string))
                        {
                            var SampleResponseData = Kooboo.Lib.Development.FakeData.GetFakeValue(item.ReturnType);
                            model.Sample = Kooboo.Lib.Helper.JsonHelper.Serialize(SampleResponseData);
                        }
                    }
                    methods.Add(model);
                }
            }

            return(methods);
        }
Пример #2
0
Файл: k.cs Проект: webrot/Kooboo
        private List <MethodViewModel> GetRepositoryMethod(Type type, string MethodPathBase)
        {
            var methods = new List <MethodViewModel>();

            var repo = Activator.CreateInstance(type) as IRepository;

            bool isRoutable = Kooboo.Attributes.AttributeHelper.IsRoutable(repo.ModelType);

            var allmethods = Kooboo.Lib.Reflection.TypeHelper.GetPublicMethods(type);

            var takeMethods = new List <string>();

            if (isRoutable)
            {
                takeMethods.Add("GetByUrl");
            }
            takeMethods.Add("Get");
            takeMethods.Add("All");

            foreach (var methodname in takeMethods)
            {
                var finds = allmethods.FindAll(o => o.Name == methodname);
                if (finds == null || finds.Count() == 0)
                {
                    continue;
                }
                var item = finds[0];

                int paracount = item.GetParameters().Count();

                foreach (var f in finds)
                {
                    var count = f.GetParameters().Count();
                    if (count < paracount)
                    {
                        item      = f;
                        paracount = count;
                    }
                }

                var model = new MethodViewModel();
                model.Name = MethodPathBase + "." + item.Name;
                var paras = item.GetParameters();
                foreach (var p in paras)
                {
                    model.Parameters.Add(p.Name, p.ParameterType.Name);
                }

                model.ReturnType = item.ReturnType;

                if (item.ReturnType != typeof(void))
                {
                    if (item.ReturnType.IsClass && item.ReturnType != typeof(string))
                    {
                        var SampleResponseData = Kooboo.Lib.Development.FakeData.GetFakeValue(item.ReturnType);
                        model.Sample = Kooboo.Lib.Helper.JsonHelper.Serialize(SampleResponseData);
                    }
                }
                methods.Add(model);
            }

            return(methods);
        }