Немного наглый способ (и он включает в себя фактически вызов Func
), но вы можете это сделать:
using System;
class Program
{
static Func<T,object> MakeFunc<T>()
{
return x => 23;
}
static Type GetReturnType<T>(Func<T,object> f)
{
return f(default(T)).GetType();
}
static void Main(string[] args)
{
Type t = GetReturnType(MakeFunc<string>());
Console.WriteLine(t);
}
}
Не гарантируется работа во всех ситуациях, я должен добавить - особенно если default(T)
не является допустимым параметром для Func
. Но, по крайней мере, это потенциальная отправная точка.