2010-06-07 7 views
1

Je suis curieux de savoir pourquoi je reçois un avertissement de compilateur dans la situation suivante.C# XML Documentation Compiler Avertissement

/// <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 
    } 

} 

L'avertissement que "commentaire XML sur 'B.MethodB()' a cref attribut 'METHODA' qui ne pouvait pas être résolu." Si B hérite de A, le compilateur ne devrait-il pas voir cette méthode lors de la génération de la documentation sans que je spécifie la classe parent dans le cref? Si je change le cref pour être cref="A.MethodA()" cela fonctionne bien, mais il semble que ce soit inutile et est une peine à faire, surtout si je dois monter à plus d'un niveau.

À titre de note à tous ceux qui testent cela, vous devez vous assurer que "Fichier de documentation XML" a été coché dans Propriétés -> Construire afin de voir l'avertissement.

Répondre

2

Si B hérite de A, le compilateur ne devrait-il pas pouvoir voir cette méthode lors de la génération de la documentation sans que je ne spécifie la classe parente dans le cref?

On pourrait le penser, mais ce n'est pas le cas. L'analyseur XMLDoc a besoin de la qualification pour placer la méthode dans la portée correcte de la classe à laquelle elle appartient. Si la méthode fait partie de la même classe (c'est-à-dire qu'elle n'est pas dérivée d'une classe de base), vous pouvez vous passer de la qualification, sinon vous en avez besoin.

+0

Y at-il une raison pour laquelle il a besoin de la qualification et ne peut pas rechercher l'arbre lui-même? –

+0

@Craig: Vous ne devriez pas le regarder comme un appel de méthode. C'est plutôt un lien vers une certaine page de documentation. Puisque 'MethodA' est documenté sur la page de documentation pour la classe' A', vous avez besoin de la référence. La documentation n'est pas vraiment "compilée" comme le code actuel. La documentation n'est pas héritée. – chiccodoro

Questions connexes