Exemplo n.º 1
0
        /// <summary>
        /// Processes method attributes.
        /// </summary>
        /// <param name="methodBuilder">A method builder.</param>
        /// <param name="methodInfo">The method.</param>
        /// <returns>The method builder.</returns>
        public static IMethodBuilder ProcessAttributes(
            this IMethodBuilder methodBuilder,
            MethodInfo methodInfo)
        {
            foreach (var attr in methodInfo.GetCustomAttributes())
            {
                if (attr is ProducesAttribute)
                {
                    methodBuilder.SetCustomAttribute(
                        AttributeUtility.BuildAttribute <Type, ProducesAttribute>(
                            ((ProducesAttribute)attr).Type,
                            () => AttributeUtility.GetAttributePropertyValues <ProducesAttribute>((ProducesAttribute)attr, new[] { "Type", "ContentTypes" })));
                }
                else if (attr is ProducesResponseTypeAttribute)
                {
                    methodBuilder.SetCustomAttribute(
                        AttributeUtility.BuildAttribute <int, ProducesResponseTypeAttribute>(
                            ((ProducesResponseTypeAttribute)attr).StatusCode,
                            () => AttributeUtility.GetAttributePropertyValues <ProducesResponseTypeAttribute>((ProducesResponseTypeAttribute)attr, new[] { "type" })));
                }

/*
 *              else if (attr is SwaggerParameterAttribute)
 *              {
 *                  methodBuilder.SetCustomAttribute(
 *                      AttributeUtility.BuildAttribute<string, SwaggerParameterAttribute>(
 *                          ((SwaggerParameterAttribute)attr).ParameterName,
 *                          () => AttributeUtility.GetAttributePropertyValues<SwaggerParameterAttribute>((SwaggerParameterAttribute)attr, null)));
 *              }
 *              else if (attr is SwaggerRequestHeaderParameterAttribute)
 *              {
 *                  methodBuilder.SetCustomAttribute(
 *                      AttributeUtility.BuildAttribute<string, SwaggerRequestHeaderParameterAttribute>(
 *                          ((SwaggerRequestHeaderParameterAttribute)attr).Header,
 *                          () => AttributeUtility.GetAttributePropertyValues<SwaggerRequestHeaderParameterAttribute>((SwaggerRequestHeaderParameterAttribute)attr, null)));
 *              }
 */
                else if (attr is ObsoleteAttribute)
                {
                    methodBuilder.SetCustomAttribute(
                        AttributeUtility.BuildAttribute <ObsoleteAttribute>(null));
                }
            }

            return(methodBuilder);
        }