2017-06-15 4 views
1

Dire que j'ai ceci:Pourquoi ne puis-je pas référencer les membres accessibles dans une classe de base à partir de balises de commentaire de documentation XML dans une classe dérivée?

internal abstract class Animal 
{ 
    internal bool IsExtinct { get; set; } 
} 

internal sealed class WoollyMammoth : Animal 
{ 
    internal int WeightLbs { get; set; } 

    /// <summary> 
    /// Construct a new instance with <see cref="IsExtinct"/> // this throws an error "XML comment has cref attribute 'IsExtinct' that could not be resolved". 
    /// set to "true" and <see cref="WeightLbs"/> // this works just fine. 
    /// initialized to 0. 
    /// </summary> 
    WoollyMammoth() 
    { 
     // no problem with either of these, of course. 
     IsExtinct = true; 
     WeightLbs = 0; 
    } 
} 

Pourquoi ai-je une erreur en essayant de référencer la propriété IsExtinct, définie dans la classe de base, de la balise de commentaire XML <see/>? Je peux accéder aux propriétés définies dans la classe dérivée, comme WeightLbs.

+0

La propriété peut-elle être privée? –

Répondre

2

Pour référencer un symbole de classe de base, utilisez un nom qualifié: <see cref="Animal.IsExtinct"/>.

Il n'y a aucune raison particulière pour laquelle cela devrait être requis. La base de code Roslyn contient un test qui teste spécifiquement que les symboles de classe de base ne sont pas trouvées (CrefTests.TypeScope4) qui mentionne que la raison est tout simplement parce que c'est ce que le compilateur précédent a fait:

// As in dev11, we ignore the inherited method symbol.

Il semble Comme un accident historique, et puisque la solution de contournement est triviale, il est peu probable qu'elle soit modifiée.