Предупреждение компилятора документации C # XML - PullRequest
1 голос
/ 07 июня 2010

Мне любопытно, почему я получаю предупреждение компилятора в следующей ситуации.

/// <summary>This is class A
/// </summary>
public class A
{
    /// <summary>This is the documentation for Method A
    /// </summary>
    public void MethodA()
    {
        //Do something
    }
}

/// <summary>This is class B
/// </summary>
public class B : A
{
    /// <summary>This does something that I want to
    /// reference <see cref="MethodA"/>
    /// </summary>
    public void MethodB()
    {
        //Do something
    }

}

В предупреждении говорится, что «XML-комментарий к« B.MethodB () »имеет атрибут cref« MethodA », которыйне может быть решена ".Если B наследуется от A, не должен ли компилятор видеть этот метод при создании документации, если я не укажу родительский класс в cref?Если я изменю cref на cref="A.MethodA()", он будет работать нормально, но кажется, что в этом нет необходимости, и это трудная задача, особенно если мне нужно подняться более чем на один уровень.

В качестве примечания для любого, кто тестирует это, вы должны быть уверены, что «XML документация» отмечена в Свойствах -> Сборка, чтобы увидеть предупреждение.

1 Ответ

2 голосов
/ 07 июня 2010

Если B наследует от A, не должен ли компилятор видеть этот метод при генерации документации без указания родительского класса в cref?

Вы бы так подумали, но это не так. Синтаксическому анализатору XMLDoc нужна квалификация, чтобы поместить метод в правильную область класса, к которому он принадлежит. Если метод является частью того же класса (т. Е. Не является производным от базового класса), вы можете обойтись без квалификации, в противном случае она вам понадобится.

...