private void SetResponseDescription(ApiDescription apiDescription, DynamicHttpActionDescriptor actionDescriptor)
        {
            var responseDescription = CreateResponseDescription(actionDescriptor);
            var prop2 = typeof(ApiDescription).GetProperties().Single(p => p.Name == "ResponseDescription");

            prop2.SetValue(apiDescription, responseDescription);
        }
        private Collection <ApiDescription> InitializeApiDescriptions()
        {
            var apiDescriptions = new Collection <ApiDescription>();

            foreach (var item in base.ApiDescriptions)
            {
                apiDescriptions.Add(item);
            }

            var dynamicApiControllerInfos = _dynamicApiControllerManager.GetAll();

            foreach (var dynamicApiControllerInfo in dynamicApiControllerInfos)
            {
                if (IsApiExplorerDisabled(dynamicApiControllerInfo))
                {
                    continue;
                }

                foreach (var dynamicApiActionInfo in dynamicApiControllerInfo.Actions.Values)
                {
                    if (IsApiExplorerDisabled(dynamicApiActionInfo))
                    {
                        continue;
                    }

                    var apiDescription = new ApiDescription();

                    var controllerDescriptor = new DynamicHttpControllerDescriptor(_abpWebApiConfiguration.HttpConfiguration, dynamicApiControllerInfo);
                    controllerDescriptor.ControllerName = controllerDescriptor.ControllerName.Replace("/", "_");
                    var actionDescriptor = new DynamicHttpActionDescriptor(_abpWebApiConfiguration, controllerDescriptor, dynamicApiActionInfo);

                    apiDescription.ActionDescriptor = actionDescriptor;
                    apiDescription.HttpMethod       = actionDescriptor.SupportedHttpMethods[0];

                    var actionValueBinder = _abpWebApiConfiguration.HttpConfiguration.Services.GetActionValueBinder();
                    var actionBinding     = actionValueBinder.GetBinding(actionDescriptor);

                    apiDescription.ParameterDescriptions.Clear();
                    foreach (var apiParameterDescription in CreateParameterDescription(actionBinding, actionDescriptor))
                    {
                        apiDescription.ParameterDescriptions.Add(apiParameterDescription);
                    }

                    SetResponseDescription(apiDescription, actionDescriptor);

                    apiDescription.RelativePath = "api/services/" + dynamicApiControllerInfo.ServiceName + "/" + dynamicApiActionInfo.ActionName;

                    apiDescriptions.Add(apiDescription);
                }
            }

            return(apiDescriptions);
        }
        private Collection <ApiDescription> InitializeApiDescriptions()
        {
            Collection <ApiDescription> apiDescriptions = new Collection <ApiDescription>();

            //webapi
            foreach (var item in base.ApiDescriptions)
            {
                apiDescriptions.Add(item);
            }

            //dynamic api
            var dynamicapiinfos = DynamicApiControllerManager.GetAll();

            foreach (var dynamicapiinfo in dynamicapiinfos)
            {
                foreach (var item in dynamicapiinfo.Actions)
                {
                    ApiDescription api        = new ApiDescription();
                    var            httpaction = new HttpControllerDescriptor();
                    httpaction.Configuration  = _config;
                    httpaction.ControllerType = dynamicapiinfo.ServiceInterfaceType;
                    httpaction.ControllerName = dynamicapiinfo.ServiceName;
                    var action = new DynamicHttpActionDescriptor(_abpWebApiConfiguration, httpaction, item.Value);
                    api.ActionDescriptor = action;
                    api.HttpMethod       = GetMethod(item.Value.Verb);
                    IActionValueBinder actionValueBinder = _config.Services.GetActionValueBinder();
                    HttpActionBinding  actionBinding     = actionValueBinder.GetBinding(action);

                    //parameter
                    IList <ApiParameterDescription> parameterDescriptions = CreateParameterDescription(actionBinding, action);
                    //using refletions to internal set
                    var prop = typeof(ApiDescription).GetProperties().Where(p => p.Name == "ParameterDescriptions").SingleOrDefault();
                    prop.SetValue(api, new Collection <ApiParameterDescription>(parameterDescriptions));


                    //resopnse
                    ResponseDescription responseDescription = CreateResponseDescription(action);
                    var prop2 = typeof(ApiDescription).GetProperties().Where(p => p.Name == "ResponseDescription").SingleOrDefault();
                    prop2.SetValue(api, responseDescription);

                    api.RelativePath = "api/services/" + dynamicapiinfo.ServiceName + "/" + item.Value.ActionName;

                    apiDescriptions.Add(api);
                }
            }
            return(apiDescriptions);
        }