public static ParameterWithExample Convert(IParameter parameter) { var parameterWithExample = new ParameterWithExample(); var fields = parameter.GetType().GetFields(); foreach (var field in fields) { parameterWithExample .GetType() .GetField(field.Name) .SetValue(parameterWithExample, field.GetValue(parameter)); } return(parameterWithExample); }
/// <summary> /// Prepare swagger request. /// </summary> /// <param name="operation">See <see cref="Operation"/>.</param> /// <param name="context">See <see cref="OperationFilterContext"/>.</param> private static void PrepareSwaggerRequest(Operation operation, OperationFilterContext context) { var responseAttributes = context.ApiDescription .ActionAttributes() .OfType <SwaggerRequestExamplesAttribute>(); var actionDescriptor = (ControllerActionDescriptor)context.ApiDescription.ActionDescriptor; var action = actionDescriptor.ControllerTypeInfo.GetMethod(actionDescriptor.ActionName); var parameters = action.GetParameters(); for (var i = 0; i < parameters.Length; i++) { var parameter = parameters[i]; var attr = parameter.GetCustomAttribute <SwaggerRequestExamplesAttribute>(); if (attr != null) { var request = operation.Parameters.FirstOrDefault(p => p.Name == parameter.Name); var list = Enumerable.ToList(operation.Parameters); var requestWithExample = ParameterWithExample.Convert(request); if (attr.Instance != null) { requestWithExample.Xexamples = FormatAsJson(attr.Instance); } else if (!string.IsNullOrEmpty(attr.Example)) { requestWithExample.Xexamples = new Dictionary <string, string>() { { "application/json", attr.Example } }; } operation.Parameters[i] = requestWithExample; } } }