使用泛型为泛型类型生成 IEnumerable
我有一个类 X、Y 和 Z,并且需要一种方法来让一个方法返回 X、Y 或 Z 的 IEnumerable,例如:
public IEnumerable<T> BuildList<T>(String sql)
{
return Query<T>(sql);
}
其中 Query 是执行 SQL 查询并将结果映射到 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");
是查询方法还是我只是做错了泛型?
I've got a class X, Y and Z and need a way to have one method to return an IEnumerable of X, Y or Z, something like :
public IEnumerable<T> BuildList<T>(String sql)
{
return Query<T>(sql);
}
Where Query is a custom method to do SQL queries and mapping the result to a IEnumerable of T.
I want to use it like :
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");
Is the problem the Query-method or I'm I just doing the generics wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
鉴于您在评论中给出的编译器错误,听起来您只需要对
T
进行类型约束:Given the compiler error you've given in the comment, it sounds like you just need a type constraint on
T
:T 的类型应该存在于 dbcontext 中
type of T should be exist in dbcontext