XML-комментарии о событиях, объявленных делегатом - PullRequest
2 голосов
/ 16 марта 2010

Я посещаю какой-то старый код, и есть довольно много событий, объявленных с делегатами вручную, а не с помощью EventHandler , например:

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

Все хорошо, пока я не использую sandcastle для документирования библиотеки, потому что тогда она не может найти никаких комментариев XML для частного поля Added, которое генерируется объявлением события. Я хочу попытаться разобраться в этом, но я хотел бы либо:

  • Получите sandcastle, чтобы игнорировать автоматически сгенерированное приватное поле, не сообщая ему полностью игнорировать все приватные поля

или

  • Получение сгенерированных комментариев XML для частного поля

Есть ли способ достичь этого без перефакторинга кода, чтобы он выглядел следующим образом:

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

1 Ответ

0 голосов
/ 16 марта 2010

Хотя это было неоптимальным, я нашел способ обойти это: вручную поместить комментарии XML в файл, содержащий документацию на уровне пространства имен для проекта, по следующим строкам:

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

Это дает примерно то, что мне нужно.

...