Комментарии XML-Как правильно комментировать явно реализованные интерфейсы?

код:

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 ответов


быстрый тест с Sandcastle Help File Builder показал, что в созданной документации ссылка <seealso cref="IFoo.Bar()"/> указывает на метод в интерфейсе и <seealso cref="Bar()"/> указывает на метод в классе. Документация для явно реализованного метода наследуется от интерфейса, поэтому вы все равно должны указать на метод интерфейса.

Edit: ReSharper также жалуется на <seealso cref="FooClass.IFoo.Bar()"/> и исправляет его, чтобы быть <seealso cref="IFoo.Bar()"/>, который затем указывает на метод интерфейса, а не явно реализован один.


использовать <seealso cref="M:FooClass.IFoo#Bar"/>. Это синтаксис, используемый в файле комментариев XML-документа.

и не забудьте указать префикс пространства имен для класса и интерфейса. Если FooClass и IFoo проживал в FooNamespace, вы должны написать <seealso cref="M:FooNamespace.FooClass.FooNamespace#IFoo#Bar"/>. Методы с аргументами нуждаются в полном списке параметров.

вы не получите Intellisense для этого. И компилятор не будет жаловаться, если вы неправильно поняли синтаксис. Вам нужно будет проверить это с помощью документа генератор.

Я тестировал это с sandcastle, и он работает, но он слишком хрупкий, чтобы серьезно использовать его.