Сложное выражение nHibernate QueryOver

Немного наглый способ (и он включает в себя фактически вызов 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. Но, по крайней мере, это потенциальная отправная точка.

11
задан ahsteele 3 October 2011 в 20:01
поделиться