![](/img/trans.png)
[英]Comparing generics: A “master-type” IEnumerable<> that is generic, but matches all specific types (IEnumerable<int>, IEnumerable<object>, …)?
[英]Using generics to produce a IEnumerable for generic type
我有一个 class X、Y 和 Z,需要一种方法来返回 X、Y 或 Z 的 IEnumerable,例如:
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");
问题是查询方法还是我只是在做 generics 错误?
鉴于您在评论中给出的编译器错误,听起来您只需要对T
进行类型约束:
public IEnumerable<T> BuildList<T>(String sql) where T : class, new()
{
return Query<T>(sql);
}
T 的类型应该存在于 dbcontext 中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.