当前位置: 首页 > news >正文

C# API 文档注释规范

C# API 文档注释规范

  • 1. 命名空间注释(namespace)
  • 2. summary
  • 3. remarks and para
  • 4. param
  • 5. returns
  • 6. example and code
  • 7. exception
  • 8. typeparam

最近在开发工作中需要实现 API 帮助文档,如果根据所写的代码直接重写 API 帮助文档将会是意见非常大的工作量,如果根据所写的代码直接生成 API 帮助文档,将会大大减少工作量。Sandcastle Help File Builder可以实现上述需求。如果想要生成一个比较全面的 API 帮助文档,就需要对 C# 代码做一个比较全面的注释。在本文中,将根据Sandcastle Help File Builder 文档对 C# 代码注释做一个简单的总结。

1. 命名空间注释(namespace)

XML 注释不能直接应用于代码中的命名空间。因此,必须采取 指定命名空间注释的替代方法。

在源代码中,向每个命名空间添加一个空的 NamespaceDoc 类,当生成 XML 注释文件时,它们将用作命名空间注释。若要防止 NamespaceDoc 类出现在帮助文件中,请省略public关键字,并使用 CompilerGenerated 属性对其进行标记。 这将导致在为程序集生成反射信息时自动忽略该类。 下面是一个示例:

namespace OpenVinoSharp
{/// <summary>/// These are the namespace comments for <c>OpenVinoSharp</c>./// </summary>[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]class NamespaceDoc{}
}

2. summary

用于提供类型或成员的简要说明,对所有类型和类型成员都有效。格式如下:

/// <summary>
/// function/claee/enmu description
/// </summary>

例如:

/// <summary>
/// Global functions under ov namespace
/// </summary>
public static partial class Ov
{}

在使用Sandcastle Help File Builder生成帮助文档后显示:

image-20230816160129528

3. remarks and para

remarks:用于提供类型或成员的更详细说明,对所有类型和类型成员都有效。格式如下:

parade:用于在其他元素中开始一个新段落。格式如下:

/// <remarks>
/// dfunction/claee/enmu description
/// </remarks>

例如:

/// <remarks>
///     <para>
///     For IR format (*.bin):
///     if `bin_path` is empty, will try to read a bin file with the same name as xml and
///     if the bin file with the same name is not found, will load IR without weights.
///     For the following file formats the `bin_path` parameter is not used:
///     </para>
///     <para>ONNX format (*.onnx)</para>
///     <para>PDPD(*.pdmodel)</para>
///     <para>TF(*.pb)</para>
///     <para>TFLite(*.tflite)</para>
/// </remarks>
public Model read_model(string model_path, string bin_path = "") 

在使用Sandcastle Help File Builder生成帮助文档后显示:

image-20230816162809573

4. param

用于描述方法参数。对描述每个参数的方法和运算符重载有效。参数名称是被引用的参数的名称。格式如下:

/// <param name="paramName">
/// Parameter description
/// </param>

例如:

/// <param name="model_path">String with a model in IR / ONNX / PDPD / TF / TFLite format.</param>
/// <param name="weights">Shared pointer to a constant tensor with weights.</param>
public Model read_model(string model_path, Tensor weights) 

在使用Sandcastle Help File Builder生成帮助文档后显示:

image-20230816161147746

5. returns

用于描述方法的返回值,对返回值的所有方法都有效。格式如下:

/// <returns>description</returns>

例如:

/// <returns>InferRequest object</returns>
public InferRequest create_infer_request()

在使用Sandcastle Help File Builder生成帮助文档后显示:

image-20230816161706400

6. example and code

example: 用于定义类型或其成员之一的示例,以显示如何使用它。对所有类型和成员都有效。说明是可选的。通常包含一个或多个代码元素以显示示例代码,为了更具描述性的文本,可以根据需要包含在代码元素之间。

code:用于指示应将多行文本部分格式化为代码块。格式如下:

/// <example>
/// Optional code description
/// <code language="C#">
/// Example code
/// </code>
/// </example>

例如:

/// <example>
/// when user data has 'NHWC' layout (example is RGB image, [1, 224, 224, 3]) but model expects
/// planar input image ('NCHW', [1, 3, 224, 224]). Preprocessing may look like this:
/// <code>
/// var proc = PrePostProcessor(model);
/// proc.input().tensor().set_layout("NHWC"); // User data is NHWC
/// proc.input().preprocess().convert_layout("NCHW")) // model expects input as NCHW
/// </code>
/// </example>
public PreProcessSteps convert_layout(Layout layout)

在使用Sandcastle Help File Builder生成帮助文档后显示:

image-20230816162256142

7. exception

用于列出可由类型成员引发的异常。对属性、方法、事件、运算符和类型转换成员有效。异常类型是可以引发的异常类型的名称。格式如下:

/// <exception cref="exceptionType">description</exception>

例如:

/// <exception cref="">If a model has more than one input, this method throws ov::Exception.</exception>
public Input input()

在使用Sandcastle Help File Builder生成帮助文档后显示:

image-20230816163642151

8. typeparam

用于描述泛型类型和方法上的泛型参数。对泛型类型和泛型方法有效,用于描述每个泛型类型参数。类型参数名称是泛型类型参数的名称 引用。格式如下:

/// <typeparam name="T">Type parameter description</typeparam>

例如:

/// <typeparam name="T">data type</typeparam>
public void set_data<T>(T[] input_data)

在使用Sandcastle Help File Builder生成帮助文档后显示:

image-20230816165907570

http://www.lryc.cn/news/128394.html

相关文章:

  • 分类预测 | Matlab实现基于TSOA-CNN-GRU-Attention的数据分类预测
  • 《深度剖析K8s》学习笔记
  • 神经网络基础-神经网络补充概念-49-adam优化算法
  • Java:正则表达式书写规则及相关案例:检验QQ号码,校验手机号码,邮箱格式,当前时间
  • 图数据库_Neo4j_Centos7.9安装Neo4j社区版3.5.4_基于jdk1.8---Neo4j图数据库工作笔记0011
  • 使用Rust编写的一款使用遗传算法、神经网络、WASM技术的模拟生物进化的程序
  • UE4/UE5 “无法双击打开.uproject 点击无反应“解决
  • 【前端】深入理解CSS定位
  • 【问题】分布式事务的场景下如何保证读写分离的数据一致性
  • 常见的Web安全漏洞有哪些,Web安全漏洞常用测试方法介绍
  • 随机微分方程
  • 下载安装并使用小乌龟TortoiseGit
  • npm ERR!Cannot read properties of null(reading ‘pickAlgorithm’)报错问题解决
  • web前端tips:js继承——组合继承
  • (7)(7.3) 自动任务中的相机控制
  • Python 爬虫小练
  • vue3 事件处理 @click
  • 【第三阶段】kotlin语言使用replace完成加解密操作
  • springBoot是如何实现自动装配的
  • 基于python+MobileNetV2算法模型实现一个图像识别分类系统
  • 管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——归纳评价——归纳谬误
  • C++适配器模式
  • cocos creator 设置精灵镜像翻转效果
  • kafka的位移
  • 大数据平台运维实训室建设方案
  • dll调用nodejs的回调函数
  • 网络安全--linux下Nginx安装以及docker验证标签漏洞
  • 多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测
  • 金蝶软件实现Excel数据复制分录信息粘贴到单据体分录行中
  • 【Linux操作系统】深入探索Linux进程:创建、共享与管理