Как получить имя типа аргумента общего типа?
Если у меня есть подпись метода, например
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;