You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用new关键字隐藏方法时如何继承原方法的文档注释

C# 子类new隐藏父类方法时继承父类文档注释的可行方案

默认无参数的<inheritdoc/>标签对new修饰的隐藏成员无效,核心原因是new关键字声明的是与父类同签名的全新独立成员,不属于虚方法重写(override)的成员继承链路,XML注释的默认解析规则不会自动关联父类的同名同签名方法。


可直接生效的通用方案

显式给<inheritdoc/>标签添加cref属性,直接指定要继承注释的父类成员路径即可,这个写法被Visual Studio、Rider等主流IDE的智能提示,以及DocFX、Sandcastle等主流文档生成工具原生支持,无需额外配置。

修改后的子类代码示例:

public class Parent
{
    /// <summary>
    /// Boo!!!
    /// </summary>
    public void Foo()
    {
        // ... code here
    }
}

public class Child : Parent
{
    /// <inheritdoc cref="Parent.Foo()"/>
    /// <remarks>
    /// 子类实现会先调用父类原始逻辑,再执行额外的扩展操作
    /// </remarks>
    public new void Foo()
    {
        base.Foo();
        // ... additional logic here
    }
}

方案特点

  • 会完整继承父类对应方法的所有注释内容,包括摘要、参数说明、返回值说明、异常声明等所有XML注释节点
  • 如果父类方法带参数,cref中只要按C#的类型简写写入方法签名即可,例如父类方法为void Foo(string msg)时,路径写为Parent.Foo(string)即可正确匹配
  • 支持在继承注释的基础上追加子类专属的补充注释,追加内容不会覆盖从父类继承的文档
  • 零额外配置,写对cref的指向路径即可在IDE智能提示、文档生成场景同时生效

批量场景的可选方案

如果项目中存在大量new隐藏的成员需要继承父类注释,可以针对使用的文档生成工具配置成员映射规则:

  • 对DocFX可配置memberLayout相关规则,添加同签名隐藏成员的注释查找逻辑
  • 对Sandcastle Help File Builder可配置Inherited Documentation的解析规则,纳入非重写的同签名成员

注意:这类配置仅对最终生成的站点/文档文件生效,IDE编辑时的智能提示不会识别这类自定义规则,日常开发优先选择显式指定cref的方案。


内容的提问来源于stack exchange,提问作者MsCProg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:21:33