2012-03-02 89 views
0

我有这样的评论: 过滤内容评论

/// <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属性应该增加了与文档中出现的段落顺序无关的灵活性。

回答

0

我找到了一个解决方案,但看起来很麻烦。

/// <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) { } 

作为it is not possible to use XPath expressions as a filter,所述param元素必须被重复。 表达式@id>0(需要转义的>)现在只选择预期的段落。

但是其他标记呢? 嵌套的inheritdoc元素将选择所有param节点的内容,因此我们必须在父级的name属性中添加一个条件。

最后,summary标记内的inheritdoc标记将复制摘要。如果我们在根级别上放置了inheritdoc,这将再次选择param,如here所述。