在xml-comment的cref部分构造泛型类型

时间:2011-12-06 16:29:21

标签: c# generics xml-comments

我有这样的通用异常类:

public class DuplicateException<TEntity> : Exception
{
    public TEntity Entity { get; set; }
}

我有非泛型方法可能抛出构造的泛型异常:

void Save()
{
    throw new DuplicateException<SomeEntity>();
}

此方法可能抛出此通用异常,但只抛出此类构造类型DuplicateException<SomeEntity>,并且它不能将此异常与其他类型参数而不是SomeEntity一起抛出。

现在我想在Save方法的xml-comment中指定这个事实。 This article描述了如何使用泛型异常来评论方法,我尝试了这两种方法:

1)在VS中通过自动完成默认插入:

/// <exception cref="DuplicateException{TEntity}" />

2)用TEntity

替换SomeEntity
/// <exception cref="DuplicateException{SomeEntity}" />

但在这两种情况下,输出XML仍然声明此方法可能会抛出泛型非构造类型,而根本不提及SomeEntity

<exception cref="T:MyNameSpace.DuplicateException`1" />

1 个答案:

答案 0 :(得分:3)

cref属性的目的是链接到类型的文档。但是没有具体泛型类型的文档,因此生成的cref属性用于泛型类型定义并不奇怪。您担心的是,您希望显示与链接中的内容不同的内容。您可以在使用元素时执行此操作,因为元素的内容是链接的文本。但是在元素中,元素的内容是异常发生时的描述。所以我认为没有办法做你想要的。