• Asp.net Web Api开发Help Page 添加对数据模型生成注释的配置和扩展


    在使用webapi框架进行接口开发的时候,编写文档会需要与接口同步更新,如果采用手动式的更新的话效率会非常低。webapi框架下提供了一种自动生成文档的help Page页的功能。

    但是原始版本的效果不是很好,最重要的一点是没有对数据模型的详细注解提供展示。这种请情况下需要我们自己对其进行拓展,方便显示出接口和数据模型注解,在将接口提供给其他人使用时提高可读性。

    下面先上两份效果图 

    在这里讲一下最重要的两个步骤 

     1:重写拓展一个XmlDocumentationProvider类 

        /// <summary>A custom 
        /// <see cref="IDocumentationProvider"/> 
        /// that reads the API documentation from a collection of XML documentation files.
        /// </summary>
        public class MultiXmlDocumentationProvider : IDocumentationProvider, IModelDocumentationProvider
        {
            /*********
        ** Properties
        *********/
            /// <summary>The internal documentation providers for specific files.</summary>
            private readonly XmlDocumentationProvider[] Providers;
    
    
            /*********
            ** Public methods
            *********/
            /// <summary>Construct an instance.</summary>
            /// <param name="paths">The physical paths to the XML documents.</param>
            public MultiXmlDocumentationProvider(params string[] paths)
            {
                this.Providers = paths.Select(p => new XmlDocumentationProvider(p)).ToArray();
            }
    
            /// <summary>Gets the documentation for a subject.</summary>
            /// <param name="subject">The subject to document.</param>
            public string GetDocumentation(MemberInfo subject)
            {
                return this.GetFirstMatch(p => p.GetDocumentation(subject));
            }
    
            /// <summary>Gets the documentation for a subject.</summary>
            /// <param name="subject">The subject to document.</param>
            public string GetDocumentation(Type subject)
            {
                return this.GetFirstMatch(p => p.GetDocumentation(subject));
            }
    
            /// <summary>Gets the documentation for a subject.</summary>
            /// <param name="subject">The subject to document.</param>
            public string GetDocumentation(HttpControllerDescriptor subject)
            {
                return this.GetFirstMatch(p => p.GetDocumentation(subject));
            }
    
            /// <summary>Gets the documentation for a subject.</summary>
            /// <param name="subject">The subject to document.</param>
            public string GetDocumentation(HttpActionDescriptor subject)
            {
                return this.GetFirstMatch(p => p.GetDocumentation(subject));
            }
    
            /// <summary>Gets the documentation for a subject.</summary>
            /// <param name="subject">The subject to document.</param>
            public string GetDocumentation(HttpParameterDescriptor subject)
            {
                return this.GetFirstMatch(p => p.GetDocumentation(subject));
            }
    
            /// <summary>Gets the documentation for a subject.</summary>
            /// <param name="subject">The subject to document.</param>
            public string GetResponseDocumentation(HttpActionDescriptor subject)
            {
                return this.GetFirstMatch(p => p.GetDocumentation(subject));
            }
    
    
            /*********
            ** Private methods
            *********/
            /// <summary>Get the first valid result from the collection of XML documentation providers.</summary>
            /// <param name="expr">The method to invoke.</param>
            private string GetFirstMatch(Func<XmlDocumentationProvider, string> expr)
            {
                return this.Providers
                    .Select(expr)
                    .FirstOrDefault(p => !String.IsNullOrWhiteSpace(p));
            }
        }

    2改写 HelpPageConfig 文件  

    然后指定下xml的生成目录  打开项目属性设置 即可 然后运行 就是一个可以显示注释的良好页面了

  • 相关阅读:
    he canvas has been tainted by cross-origin data and tainted canvases may not be exported
    Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
    HOW TO REPLACE ALL OCCURRENCES OF A CHARACTER IN A STD::STRING
    one or more multiply defined symbols found
    Std::map too few template arguments
    Always run a program in administrator mode in Windows 10
    JSON.parse 必须用双引号包起来
    jni4net使用小结
    Cannot generate C# proxy dll with JNI4NET tool, running batch file as trusted assembly?
    Java access to the Domino Objects, Part 1
  • 原文地址:https://www.cnblogs.com/zzlblog/p/10019732.html
Copyright © 2020-2023  润新知