注释泛型类型 - 是否可以引用泛型类型参数不是 T,而是其实际类型?

9

给定以下这个方法:

/// <summary>
/// Given a <see cref="T1"/>, return a <see cref="T2"/>.
/// </summary>
public T2 ExampleMethod(T1 t1)
{
   // omitted
}

我能写出这样的注释,以便于Visual Studio能正确地显示它吗?比如说,如果T1是一个“int”,而T2是一个“string”。或者说,我只能让T1和T2在注释中出现吗?
换句话说,在Visual Studio中有没有什么方法可以使这个方法的工具提示显示实际的类型名称?
编辑:似乎我没有解释清楚我真正感兴趣的内容。
假设我有一个名为Widget的类。假设我有一个像上面那样的方法。
然后,当我执行
Widget<int,string> myExample = new Widget<int,string>();

myExample.ExampleMethod(... );  // HERE - if I mouse over the method  

// I get a tooltip. Is there something I can do to the comment in my 
// example method above that will allow me to say 
// "Given a System.Int32, return a System.String"?

编辑2: 刚刚有人在这里发表了评论,但是他们的评论已被删除。他们建议我使用

///Given a <see cref="T1"/>, return a <see cref="T2"/>.

这是我现在使用的。这很好。我的问题已经第三次用不同的措辞提出了,那就是Visual Studio是否聪明到可以从构造函数中推断出T1和T2是什么?可以从方法签名中找出T1和T2是什么,而我想也许Visual Studio也可以做到,并在注释中支持此功能。

我的直觉是不行,但这就是我问的问题。


2
如果您已经知道类型,为什么要使用泛型? - Zach Spencer
@Jonesy 我已经编辑了我的问题,以使其更清晰。显然,范型的整个重点在于在编译时我们不知道类型。我意识到这一点,我的问题比这更微妙些。 - Charlie Salts
1
那现在确实更有意义了。 - Jonesopolis
2
我理解你的意思是为了在此类的类型实例成员上使用智能感知而添加注释?我认为不是这样,否则.NET框架类会实现它。就其价值而言,这似乎是一个很好的功能请求。 - esmoore68
2
我不相信VS今天能做到这一点,但这似乎是一个很好的功能请求。我认为你不应该需要对XML注释本身做任何操作;IDE应该只需推断出显示的工具提示中的适当类型名称,就像它现在已经为方法参数和返回类型所做的那样。你可以考虑在Microsoft Connect网站上提交它作为一个真正的功能请求。 - Peter Duniho
显示剩余4条评论
2个回答

3
为了补充@Martin Mulder的答案以及这个问题的一些评论,我已经向Visual Studio开发者社区提交了一个问题报告,要求将这个“问题”作为一个功能请求来解决。我基本上请求Intellisense在悬停在替换特定类型的通用语句上时,使用标签在注释中显示特定类型。如果您觉得在使用时也这样做是合适的,可以在问题报告中添加评论请求其包含在修复中! 在Intellisense中替换实际类型的泛型

1
不,Visual Studio不支持此功能。您应该问自己为什么要在注释中使用特定类型。
良好的方法文档是通过用非技术性的术语描述其功能来完成的。并且通过使用清晰的名称和对该参数期望的良好描述来描述其参数。几乎不需要类型。如果您确实需要它,则可能正在尝试以技术方式记录您的方法,这几乎永远不是一个好主意。

是的,但是评论不应该包含问题、有关问题的额外信息或(不完整的)答案。注释应该用于挑战人们改进他们的问题或答案。您的问题没有得到答案,所以我提供了一个答案。接受还是评论取决于您,这样我就可以改进它。 - Martin Mulder
"否"是正确的答案,所以我已经接受了它。我问你是否阅读了评论的原因是有其他人误解了我的问题(导致我多次编辑我的问题)直到他们最终明白我在寻找什么。当然,我理解泛型的意义。 但对于复杂的方法签名,我想知道为什么VS只能推断方法签名而不能推断注释中的类型。一些评论者在这里指出,这确实是一个有用的功能。再次回答你的问题:那就是为什么 - Charlie Salts
2
在文档中这并不有用,但在智能提示工具提示中会很有用。当智能提示显示第一个“Edit”方法的签名时,它将类型T1和T2替换为int和string,但XML注释提供的方法描述仍然是“T1”和“T2”。 - xr280xr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接