Pregunta

Estoy visitando un código de edad, y hay un buen número de eventos declarados con los delegados de forma manual en lugar de utilizar manejador de sucesos , así:

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

Todo muy bien hasta que vuelva a utilizar castillo de arena para documentar la biblioteca, ya que entonces no se puede encontrar ningún comentarios XML para el campo Añadido privada que se genera por la declaración de evento. Quiero tratar de resolver eso, pero lo que me gustaría hacer es o bien:

  • Obtener castillo de arena ignorar el ámbito privado generada automáticamente sin decirle a ignorar todos los campos privados por completo

o

  • Obtener comentarios XML generados para el campo privado

¿Hay alguna manera de conseguir esto sin volver a factorizar el código para tener este aspecto:

/// <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;
    }
}
¿Fue útil?

Solución

A pesar de sub-óptima, he encontrado una forma de evitar esto, que era poner manualmente los comentarios XML en el archivo que contiene la documentación a nivel de espacio de nombres para el proyecto, a lo largo de estas líneas:

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

Esto entonces da más o menos lo que necesitaba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top