繁体   English   中英

如何查看哪个类作为参数传递给 Rider 中的模板?

[英]How to see what class was passed into template in Rider as an argument?

我在 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?
        }
    }
}

使用全新安装和默认设置,您可以在调试时可以看到的“变量”窗口中看到变量类型:

在此处输入图片说明

我认为先前标记的答案是正确的,但仅适用于特定情况。

如果我正确理解了该问题,则可以将其改写为“如何使用 Rider 调试器检查通用参数的类型?” 如果是这样,@nvoigt 的答案是正确的,因为调试器会向您显示断点范围内每个变量的类型。 因此,在显示的示例中:

public void DoSomething<T>(T arg)
{
    ...
}

argument类型在“变量”窗口中很容易阅读: 在此处输入图片说明

但是,如果generic argument 'T'不是method argument 'arg'的类型,如下所示:

public T DoSomething<T>(string arg)
{
    ...
}

然后arg将是定义的string类型。 在这种情况下,您需要查看框架窗口 - 左侧的变量。 在那里,在第一行,您将能够看到执行停止的方法(通过断点),如果您展开该窗口,您将看到如下内容:

Program.DoSomething<TypePassedAsGenericArgument>()

其中TypePassedAsGenericArgument将是类型的全名,又名 - 命名空间 + 类名:

在此处输入图片说明

我认为这个澄清可能会帮助一些新的编码人员。 去拿那些BUG!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM