繁体   English   中英

使用 generics 为泛型类型生成 IEnumerable

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM