Question

Je visitais un code vieux, et il y a un certain nombre d'événements déclarés avec les délégués manuellement plutôt que d'utiliser EventHandler , comme ceci:

/// <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 viens d'utiliser Sandcastle pour documenter la bibliothèque, car il ne peut alors trouver des commentaires XML pour le champ Ajout privé qui est généré par la déclaration de l'événement. Je veux essayer de démêler tout cela, mais ce que je voudrais faire est soit:

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

ou

  • Obtenir des commentaires XML généré pour le champ privé

Y at-il moyen d'y parvenir sans 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;
    }
}
Était-ce utile?

La solution

Bien que sous-optimale, je trouve 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 que je avais besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top