如何在C#文档注释中指定参数描述与其他方法相同,避免重复编写?
实现方案
C# 原生支持两种方式实现XML注释参数描述的复用,你提到的<see>标签可以实现,更推荐使用<inheritdoc>标签完成全自动的注释继承,无需手动同步内容:
方法1:使用<inheritdoc>标签(推荐)
这是.NET官方提供的注释继承能力,C# 7.1及以上版本均支持,生成的XML文档、VS智能提示都会自动继承目标方法的参数描述,原方法注释修改后会自动同步,无需手动改动:
/// <summary> /// abc /// </summary> /// <param name="log">ILogger object to be used to log via stdout.</param> /// <param name="abc">Some random string</param> public static void abc(ILogger log, string abc) { } /// <summary> /// pqr /// </summary> <!-- 直接继承abc方法的所有参数注释,无需重复编写 --> /// <inheritdoc cref="abc(ILogger, string)"/> public static void pqr(ILogger log, string abc) { }
如果需要自定义部分参数的描述,只需要单独重写对应<param>标签即可,其余参数仍会继承原方法的注释:
/// <summary> /// pqr /// </summary> /// <inheritdoc cref="abc(ILogger, string)"/> /// <param name="abc">自定义的abc参数说明,会覆盖继承的内容</param> public static void pqr(ILogger log, string abc) { }
方法2:使用<see>标签
如果使用不支持<inheritdoc>的低版本编译器,可以用<see>标签手动关联原方法的参数,缺点是不会自动同步原方法的描述内容,需要手动标注说明:
/// <summary> /// pqr /// </summary> /// <param name="log">同<see cref="abc(ILogger, string)"/>方法的<paramref name="log"/>参数</param> /// <param name="abc">同<see cref="abc(ILogger, string)"/>方法的<paramref name="abc"/>参数</param> public static void pqr(ILogger log, string abc) { }
内容的提问来源于stack exchange,提问作者a3y3
相关产品推荐
相关产品推荐

