Как получить имя типа аргумента универсального типа?


Если у меня есть фирменный способ, как

public string myMethod<T>( ... )

Как я могу, внутри метода, получить имя типа, который был задан в качестве аргумента типа? Я хотел бы сделать что-то подобное typeof(T).FullName, но это действительно работает...

3 63

3 ответа:

ваш код должен работать. typeof(T).FullName вполне допустимо. Это полностью компилирующая, функционирующая программа:

using System;

class Program 
{
    public static string MyMethod<T>()
    {
        return typeof(T).FullName;
    }

    static void Main(string[] args)
    {
        Console.WriteLine(MyMethod<int>());

        Console.ReadKey();
    }

}

запуск вышеуказанных отпечатков (как и ожидалось):

System.Int32

typeof(T).имя и тип (T).FullName работают на меня...Я получаю тип, переданный в качестве аргумента.

предполагая, что у вас есть некоторый экземпляр t, он ничем не отличается от любого другого типа.

var t = new T();

var name = t.GetType().FullName;