【问题标题】:Commenting Generics - Is it possible to refer to generic type parameter not as T but as its actual type?评论泛型 - 是否可以将泛型类型参数称为不是 T 而是其实际类型?
【发布时间】:2023-03-29 21:50:01
【问题描述】:

给定这样的方法:

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

例如,如果 T1 是 int 并且 T2 是 string,我可以编写一个注释以便 Visual Studio 正确显示它吗?或者,我是否坚持出现在评论中的 T1 和 T2?

换一种说法:我可以做些什么,以便在 Visual Studio 中,此方法的工具提示显示实际的类型名称?

编辑:我似乎没有解释我真正有兴趣了解的内容。

假设我有一个名为Widget&lt;T1,T2&gt; 的类。假设我有一个类似上述的方法。

然后,当我这样做时

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 可以做同样的事情并在评论中支持这一点。

我的直觉是不,但因此是问题。

【问题讨论】:

  • 既然已经知道类型,为什么还要使用泛型?
  • @ZachSpencer 假设我想为各种类型使用泛型类。我只是想知道是否有办法让 Visual Studio 正确替换 cmets 中的类型名称。
  • 现在确实更有意义了
  • 我认为您的意思是 cmets 是为了对此类的类型化实例的成员进行智能感知?我不这么认为,否则 .NET 框架类会实现它。就其价值而言,这似乎是一个极好的功能请求。
  • 我不相信今天的 VS 可以做到这一点,但这似乎是一个极好的功能请求。我认为您不需要对 XML cmets 本身做任何事情。 IDE 应该在显示的工具提示中简单地推断出适当的类型名称,就像它现在对方法参数和返回类型所做的一样。您可以考虑在 Microsoft Connect 网站上将其作为实际功能请求提交。

标签: c# visual-studio generics comments


【解决方案1】:

为了补充@Martin Mulder 的回答以及这个问题的几个 cmets,我已向 Visual Studio 开发人员社区提交了一份问题报告,以将这个“问题”作为功能请求进行修复。我基本上要求 Intellisense 在将鼠标悬停在用泛型替换特定类型的语句上时,在 cmets 中使用 &lt;typeparamref name=""/&gt; 标记时显示 cmets 中的特定类型。我不确定在使用 &lt;see cref=""/&gt; 时这样做是否合适,但如果您觉得合适,请随时在问题报告中添加评论以请求将其包含在修复中!

Substitute Generics For Actual Type In Intellisense For XML Comments

【讨论】:

    【解决方案2】:

    不,Visual Studio 不支持。您应该问自己为什么要在 cmets 中使用特定类型。

    一个好的方法文档是通过用非技术术语描述它的功能来完成的。并通过使用清晰的名称和对该参数的期望的良好描述来描述其参数。这种类型几乎不需要。如果您确实需要它,您可能正在尝试以技术方式记录您的方法,这几乎不是一个好主意。

    【讨论】:

    • 是的,但 cmets 不应包含问题、问题的附加信息或(不)完整的答案。评论应该用来挑战人们改进他们的问题或答案。你的问题没有答案,所以我提供了一个。你可以接受它,或者评论它,以便我改进它。
    • “否”是正确答案,所以我接受了。我问您是否阅读 cmets 的原因是,在他们最终摸索我的要求之前,有其他人误解了我的问题(导致我多次编辑我的问题)。 我当然明白泛型的意义。但是对于复杂的方法签名,我在问为什么 VS 只推断方法签名的类型而不是 cmets。这里的一些评论者指出,这确实是一个有用的功能。再次回答您的问题:这就是原因
    • 在文档中它不会有用,但它会在智能感知工具提示中。当智能感知显示上面第一个编辑的方法签名时,它会将类型 T1 和 T2 替换为 int 和 string,但 XML cmets 提供的方法描述只是读取“T1”和“T2”。
    猜你喜欢
    • 2013-08-16
    • 2017-04-30
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    相关资源
    最近更新 更多