XML-комментарии к событиям, объявленным делегатом
-
20-09-2019 - |
Вопрос
Я просматриваю какой-то старый код, и довольно много событий объявлено с помощью делегатов вручную, а не с помощью EventHandler<T>, например:
/// <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-комментариев для частного поля «Добавлено», созданного объявлением события.Я хочу попытаться разобраться в этом, но мне бы хотелось сделать следующее:
- Заставьте 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;
}
}
Решение
Хотя это и неоптимально, я нашел способ обойти эту проблему: вручную поместить 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>
Это дает примерно то, что мне нужно.