c# - C#同步接口(interface)和实现注释的方法

标签 c# documentation xml-documentation

是否有自动同步接口(interface)及其实现之间注释的方法?我目前正在记录它们,不想手动使它们保持同步。

更新:

考虑这段代码:

interface IFoo{
    /// <summary>
    /// Commenting DoThis method
    /// </summary>
    void DoThis();
}

class Foo : IFoo {
    public void DoThis();
}

当我这样创建类时:

IFoo foo=new Foo();
foo.DoThis();//comments are shown in intellisense

此处不显示评论:

Foo foo=new Foo();
foo.DoThis();//comments are not shown in intellisense

<inheritDoc/>标签将在 Sand CaSTLe 中完美生成文档,但它在智能提示工具中不起作用。

最佳答案

您可以使用 Microsoft SandcaSTLe(或 NDoc)inheritdoc 标签轻松完成此操作。规范并未正式支持它,但自定义标签是完全可以接受的,事实上,Microsoft 在创建 SandcaSTLe 时选择从 NDoc 复制这个(以及一两个其他标签)。

/// <inheritdoc/>
/// <remarks>
/// You can still specify all the normal XML tags here, and they will
/// overwrite inherited ones accordingly.
/// </remarks>
public void MethodImplementingInterfaceMethod(string foo, int bar)
{
    //
}

Here是 SandcaSTLe Help File Builder GUI 的帮助页面,它完整地描述了它的用法。

(当然,正如您的问题所提到的,这并不是特别的“同步”,但它似乎正是您正在寻找的东西。)

请注意,这对我来说听起来像是一个非常公平的想法,尽管我观察到有些人认为您应该始终在派生类和实现类中重新指定注释。 (实际上,我自己在记录我的一个库时就这样做了,而且我没有发现任何问题。)注释几乎总是没有理由完全不同,那么为什么不直接继承并以简单的方式来做呢?

编辑:关于您的更新,SandcaSTLe 也可以为您处理。 SandcaSTLe 可以输出它用于输入的实际 XML 文件的修改版本,这意味着您可以将这个修改版本与您的库 DLL 一起分发,而不是直接由 Visual Studio 构建的版本,这意味着您有智能感知中的注释以及文档文件(CHM,等等)。

关于c# - C#同步接口(interface)和实现注释的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40260560/

相关文章:

c++ - 如果允许堆栈分配的引用作为参数,如何进行通信?

php - 创建一个 "Table of Contents"类型的数据库

ios - 使用外部数据库的 iOS flash 应用程序指南

c# - 如何将文件夹级文档添加到 C# 程序集中?

c# - Xml 注释中需要提供哪些信息?

c# - 如何在不降低质量的情况下从 C# 放大图像(任何类型)

c# - 如何在当前项目中已存在的 T4 文本模板中引用类?

c# - %LOCALAPPDATA% 在 app.config 中不起作用

c# - 如何在Sand CaSTLe/MAML的代码示例中为类名称着色

c# - 请求/响应日志记录的响应正文