XML注释 - 您如何正确地评论显式实现的接口?

时间:2011-05-14 12:11:59

标签: c# xml-comments explicit-interface explicit-implementation

代码:

public interface IFoo
{
    void Bar();
}

public class FooClass : IFoo
{
    /// <summary> ... </summary>
    /// <seealso cref="?"/> //How do you reference the IFoo.Bar() method
    public void Bar() { }

    /// <summary> ... </summary>
    /// <seealso cref="?"/> //How do you reference the standard Bar() method
    void IFoo.Bar() { }
}

我的猜测是:

<seealso cref="IFoo.Bar()"/> //Explicitly implemented interface method
<seealso cref="Bar()"/>      //Standard method

但是,我不确定。 ECMA指南没有帮助区分,所以我想我正在寻找保证我的猜测是正确的。

2 个答案:

答案 0 :(得分:1)

使用Sandcastle帮助文件生成器进行的快速测试显示,在创建的文档中,链接<seealso cref="IFoo.Bar()"/>指向界面中的方法,<seealso cref="Bar()"/>指向类中的方法。显式实现的方法的文档继承自接口,因此您实际上应该指向接口方法。

编辑:ReSharper也向<seealso cref="FooClass.IFoo.Bar()"/>投诉并将其更正为<seealso cref="IFoo.Bar()"/>,然后指向接口方法,而不是明确实现的接口方法。

答案 1 :(得分:0)

使用<seealso cref="M:FooClass.IFoo#Bar"/>。这是XML文档注释文件中使用的语法。

并且不要忘记为类和接口的名称空间添加前缀。如果FooClassIFoo驻留在FooNamespace中,则必须编写<seealso cref="M:FooNamespace.FooClass.FooNamespace#IFoo#Bar"/>。具有参数的方法需要完全限定的参数列表。

您将不会获得Intellisense。如果语法错误,编译器也不会抱怨。您需要使用文档生成器对此进行测试。

我用沙堡测试了它,它可以工作,但是它太脆弱了,无法认真使用它。