使用泛型为泛型类型生成IEnumerable

时间:2011-07-05 11:50:07

标签: c# generics ienumerable

我有一个X,Y和Z类,需要一种方法来返回一个IE,Y或Z的IEn​​umerable,如:

public IEnumerable<T> BuildList<T>(String sql)
{
    return Query<T>(sql);
}

其中Query是一种自定义方法,用于执行SQL查询并将结果映射到T的IEnumerable。

我想使用它:

var x_items = BuildList<X>("select * from table_x");
var y_items = BuildList<Y>("select * from table_y");
var z_items = BuildList<Z>("select * from table_z");

问题是查询方法还是我只是在做泛型错误?

2 个答案:

答案 0 :(得分:4)

鉴于你在评论中给出的编译器错误,听起来你只需要T上的类型约束:

public IEnumerable<T> BuildList<T>(String sql) where T : class, new()
{
    return Query<T>(sql);
}

答案 1 :(得分:1)

类型的T应该存在于dbcontext

相关问题