我正在Rider中调试C#模板,并且想知道它是否可行,如果是,那么如何在Rider中看到哪个类进入模板?
示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
//Your code goes here
Console.WriteLine("Hello, world!");
}
public void DoSomething<T>() {
//What is a type of T?
}
}
}
答案 0 :(得分:1)
答案 1 :(得分:0)
我认为先前标记的答案是正确的,但仅适用于特定情况。
如果我正确理解了该问题,可以将其改为“如何使用Rider调试器检查通用参数的类型?”。如果是这样,则@nvoigt的答案是正确的,因为调试器会向您显示断点范围内的每个变量的类型。因此,在所示示例中:
public void DoSomething<T>(T arg)
{
...
}
但是generic argument 'T'
不是method argument 'arg'
的类型,如下所示:
public T DoSomething<T>(string arg)
{
...
}
然后,arg
的类型将为string
。在这种情况下,您需要查看“框架”窗口-“变量”的左侧。在那里,在第一行上,您将能够看到停止执行的方法(通过断点),并且如果您扩展该窗口,您将看到类似以下内容的
Program.DoSomething<TypePassedAsGenericArgument>()
其中TypePassedAsGenericArgument
将是类型的全名,又名-名称空间+类名:
我认为这种澄清可能会帮助一些新的编码人员。去买那些臭虫!