2010-03-16 34 views
2

Je visitais un code vieux, et il y a tout à fait quelques événements déclarés avec les délégués manuellement plutôt que d'utiliser EventHandler <T>, comme celui-ci:commentaires XML sur délégué a déclaré événements

/// <summary> 
/// Delegate for event Added 
/// </summary> 
/// <param name="index">Index of the item</param> 
/// <param name="item">The item itself</param> 
public delegate void ItemAdded(int index, T item); 

/// <summary> 
/// Added is raised whenever an item is added to the collection 
/// </summary> 
public event ItemAdded Added; 

Tout va bien, jusqu'à ce que je vienne à utiliser sandcastle pour documenter la bibliothèque, car il ne peut alors trouver aucun commentaire XML pour le champ privé ajouté qui est généré par la déclaration d'événement. Je veux essayer de démêler tout cela, mais ce que je voudrais faire est soit:

  • Get Sandcastle d'ignorer le champ privé généré automatiquement sans le dire à ignorer tous les champs privés entièrement

ou

  • obtenir des commentaires XML générés pour le domaine privé

Est-il possible d'y parvenir avec en réusinage le code pour ressembler à ceci:

/// <summary> 
/// Delegate for event <see cref="Added"/> 
/// </summary> 
/// <param name="index">Index of the item</param> 
/// <param name="item">The item itself</param> 
public delegate void ItemAdded(int index, T item); 

/// <summary> 
/// Private storage for the event firing delegate for the <see cref="Added"/> event 
/// </summary> 
private ItemAdded _added; 

/// <summary> 
/// Added is raised whenever an item is added to the collection 
/// </summary> 
public event ItemAdded Added 
{ 
    add 
    { 
     _added += value; 
    } 
    remove 
    { 
     _added -= value; 
    } 
} 

Répondre

0

Bien que sous-optimale, j'ai trouvé un moyen de contourner ce qui est de mettre manuellement les commentaires XML dans le fichier qui contient la documentation au niveau de l'espace de noms pour le projet , le long de ces lignes:

<member name="F:myCompany.Common.Collections.Generic.EventableCollection`1.Added"> 
    <summary> 
    Auto-generated backing field for the <see cref="E:myCompany.Common.Collections.Generic.EventableSortedList`1.Added">Added</see> event 
    </summary> 
</member> 

Cela donne alors à peu près ce dont j'avais besoin.