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

发布于 2024-11-18 10:12:37 字数 486 浏览 1 评论 0原文

我有一个类 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

漫雪独思 2024-11-25 10:12:37

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

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

Given the compiler error you've given in the comment, it sounds like you just need a type constraint on T:

public IEnumerable<T> BuildList<T>(String sql) where T : class, new()
{
    return Query<T>(sql);
}
喜你已久 2024-11-25 10:12:37

T 的类型应该存在于 dbcontext 中

type of T should be exist in dbcontext

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文