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

本文关键字:泛型类型 xml-comment cref | 更新日期: 2023-09-27 18:16:52

我有一个像这样的通用异常类:

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

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

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

这个方法可以抛出这个泛型异常,但只能抛出这个构造类型DuplicateException<SomeEntity>,它不能抛出其他类型参数而不是SomeEntity的异常。

现在我想在xml-comment for Save方法中指定这个事实。本文介绍了如何对泛型异常的方法进行注释,我尝试了以下两种方法:

1)在VS中默认插入自动补全:

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

2)用SomeEntity代替TEntity

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

但是在这两种情况下,输出XML仍然声明该方法可能抛出泛型非构造类型,根本没有提到SomeEntity:

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

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

cref属性的作用是链接到一个类型的文档。但是没有具体泛型类型的文档,所以生成的cref属性是针对泛型类型定义的也就不足为奇了。您所关心的是,您希望显示的内容与链接中的内容不同。在使用元素时可以这样做,因为元素的内容就是链接的文本。但是在元素中,元素的内容是异常发生时间的描述。所以我认为没有办法做到你想要的。