C# 有没有一种方法可以引用xml注释以避免重复它们?

C# 有没有一种方法可以引用xml注释以避免重复它们?,c#,.net,visual-studio,visual-studio-2008,C#,.net,Visual Studio,Visual Studio 2008,这根本不是什么大问题,但如果解决了,确实会很有帮助 当我重载方法等时,有时xml注释完全相同,除了1或2个参数名。我必须将注释复制/粘贴到每个重载方法中,它们是相同的。但是,有时,如果我更新了其中一个方法,而忘记返回并将其复制/粘贴到所有其他方法中,这可能会导致有关该方法的误导信息。如果有很多重载方法,这可能非常耗时并且容易出错 所以我想知道是否有一种方法可以将注释存储在一个地方(比如变量),我可以直接引用它。这样,一个变化将反映在所有相关的社区中 下面是一个例子: /// <su

这根本不是什么大问题,但如果解决了,确实会很有帮助

当我重载方法等时,有时xml注释完全相同,除了1或2个参数名。我必须将注释复制/粘贴到每个重载方法中,它们是相同的。但是,有时,如果我更新了其中一个方法,而忘记返回并将其复制/粘贴到所有其他方法中,这可能会导致有关该方法的误导信息。如果有很多重载方法,这可能非常耗时并且容易出错

所以我想知道是否有一种方法可以将注释存储在一个地方(比如变量),我可以直接引用它。这样,一个变化将反映在所有相关的社区中

下面是一个例子:

    /// <summary>
    /// Go and do something
    /// </summary>
    public void DoSomething()
    {
        DoSomething(true, "Done something");
    }

    /// <summary>
    /// Go and do something
    /// </summary>
    /// <param name="doIt">whether it should be done or not</param>
    public void DoSomething(bool doIt)
    {
        DoSomething(doIt, "Done something");
    }

    /// <summary>
    /// Go and do something cool
    /// </summary>
    /// <param name="doIt">whether it should be done or not</param>
    /// <param name="doneMessage">message to show once done</param>
    public void DoSomething(bool doIt, string doneMessage)
    {
        if (doIt)
            Console.WriteLine(doneMessage);
    }
//
///去做点什么
/// 
公共无效剂量测定法()
{
DoSomething(对,“做了某事”);
}
/// 
///去做点什么
/// 
///是否应该这样做
公共无效剂量(bool doIt)
{
DoSomething(doIt,“做某事”);
}
/// 
///去做点酷的事吧
/// 
///是否应该这样做
///完成后显示的消息
公共无效数据量(bool doIt,string doneMessage)
{
如果(doIt)
Console.WriteLine(doneMessage);
}
正如你所看到的,所有的评论都是一样的,除了我决定对最后一条做一个修改,改为“去做些酷的事情”。现在我必须去改变这是所有其他的方法注释


干杯。

标准XML注释标记中没有此类函数。另一方面,您需要的是机具。

根据这些规范:

XML注释没有固定的标准;那页上显示的只是“推荐”。在推荐的标签中,没有此类功能。但是,XML文档工具愉快地接受以下内容,没有任何警告:

/// <summary id="30">foo</summary>
void bar();

/// <summary id="30"/>
void bar(int baz);
///foo
空心钢筋();
/// 
空心钢筋(int baz);
这对您是否有用取决于您对编译器输出的XML文件的具体操作。不幸的是,像Intellisense这样的东西(代码完成和IDE工具提示等)。我不会用它做任何事


编辑:如中所述,尝试执行
。它有点重,因为它需要一个单独的文件,但如果您的文档太多,它可能是值得的。

如果您有一个接口,您可以从其他方法中引用其中一个方法,如下所示:

interface ISomeInterface
{
    /// <summary>Handles this and that.</summary>
    void SomeMethod();

    /// <summary><see cref="ISomeInterface.SomeMethod()"/></summary>
    /// <param name="i">Param blabla.</param>
    void SomeMethod(int i);
}

class SomeClass : ISomeInterface
{
    /// <summary><see cref="ISomeInterface.SomeMethod()"/></summary>
    public void SomeMethod() { }

    /// <summary><see cref="ISomeInterface.SomeMethod(int)"/></summary>
    public void SomeMethod(int i) { }
}
接口接口
{
///处理这个和那个。
无效方法();
/// 
///波拉姆布拉布拉。
无效方法(int i);
}
类SomeClass:isome接口
{
/// 
public void SomeMethod(){}
/// 
公共方法(int i){}
}

说我傻吧,但是对
进行文档范围内的搜索和替换,再加上认真使用Alt+R或Alt+a,可能会使这一点变得毫无意义。一次编辑-嗯,至少打一次

@Reinderien的答案很有参考价值……但在以利用IntelliSense或标准处理工具为目标的情况下,这并没有多大帮助

@Peter Lillevold的回答也很有信息性,我认为很酷,因为它与SHFB进行处理……但仍然没有智能感知

@Paw Baltzersen的答案可以在不使用接口的情况下使用,这很有诱惑力……但是IntelliSense也不正确


我喜欢尽可能避免搜索和替换,但在这里获得智能感知通常是我首先关心的问题。

+1我一直不敢问这个问题。@Peter-Fair point,是的,我在这方面做得很糟糕。我来整理一下,欢呼的是,按照这样的速度,人们会停止回答你的问题……你不希望:)……或者也许我错了,你有三个答案。