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

Если у меня есть подпись метода, например

public string myMethod<T>( ... )

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

Ответ 1

Ваш код должен работать. 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

Ответ 2

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

Ответ 3

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

var t = new T();

var name = t.GetType().FullName;