现在我有一个方法TResult Get<TResult>()
{
//TResult 为 IEnumerable<T>
//要如何提取出T,来作为另一个方法的泛型参数GetEntity<T>();//假设提取出了T
}T 我能得到它的Type对象,但是怎么得到它的类型,作为泛型参数

解决方案 »

  1.   

    用反射获取它的 IEnumerable.Current() 的返回类型。
      

  2.   


    IEnumerble没有Current()方法呢?
      

  3.   


    刚看的是IEnumerble<T>的帮助,错了
    IEnumerble.Current 返回的是一个Object,但是这个对象没办法作为一个方法的泛型参数传递哈
      

  4.   

    不用想了,没有办法...泛型不是这么用的...泛型类型必须在编译期间确定其类型,你这个TResult里面的T在编译时是不确定的...
      

  5.   

    http://msdn.microsoft.com/zh-cn/library/ms173128(v=VS.80).aspx用 where 对 T 限定。
      

  6.   


    public IEnumerator<T> GetEnumerator()
    {
        return (Provider.Execute<IEnumerable<T>>(Expression)).GetEnumerator();
    }
    public TResult Execute<TResult>(System.Linq.Expressions.Expression expression)
    {
        string sql = new ExpressionParser().GetSql(expression);
        //TResult is IEnumerable<T>
        return new DbHelper().ExcuteQuery<T>(sql);//假设获取到T
    }
    上面两个方法分别实现的是IQueryable<T>,IQueryProvider