Фильтровать содержимое унаследованных комментариев к параметрам - PullRequest
0 голосов
/ 02 марта 2012

У меня есть такие комментарии:

/// <summary>some summary</summary>
/// <param name="a">
///     <para id="0">Comment 0</para>
///     <para id="1">Comment 1</para>
///     <para id="2">Comment 2</para>
/// </param>
/// <param name="b">
///     <para id="1">Comment 3</para>
///     <para id="0">Comment 4</para>
/// </param>
void InterfaceMethod(int a, int b);

Для метода реализации я хотел бы иметь ту же документацию, но без этих абзацев, имеющих id="0", с использованием inheritdoc. Как я могу создать элемент inheritdoc?

Необычное использование атрибутов id в этом контексте добавляет гибкости, не привязывая их к порядку абзацев, как они появляются в документации.

1 Ответ

0 голосов
/ 06 марта 2012

Я нашел решение, но оно выглядит громоздким.

/// <summary><inheritdoc/></summary>
/// <param name="a"><inheritdoc select="node()[parent::node()[@name='a'] and @id&gt;0]"/></param>
/// <param name="b"><inheritdoc select="node()[parent::node()[@name='b'] and @id&gt;0]"/></param>
public void InterfaceMethod(int a, int b) { }

Поскольку невозможно использовать выражения XPath в качестве фильтра , элементы param должны повторяться.Выражение @id>0 (> необходимо экранировать) теперь выбирает только нужные абзацы.

Но как насчет другой разметки?Вложенный элемент inheritdoc выберет содержимое всех param узлов, поэтому мы должны добавить условие для атрибута имени родителя.

Наконец, тег inheritdoc внутриТег summary скопирует резюме.Если мы поместим inheritdoc на корневой уровень, это снова выберет param, как описано Tag"> здесь .

...