首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于匿名类型创建泛型类实例

基于匿名类型创建泛型类实例
EN

Stack Overflow用户
提问于 2008-11-11 06:38:25
回答 1查看 4.7K关注 0票数 13

我有一个类ReportingComponent<T>,它有一个构造函数:

代码语言:javascript
运行
复制
public ReportingComponent(IQueryable<T> query) {}

我对Northwind数据库进行了Linq查询,

代码语言:javascript
运行
复制
var query = context.Order_Details.Select(a => new 
{ 
    a.OrderID, 
    a.Product.ProductName,
    a.Order.OrderDate
});

查询的类型为IQueryable<a'>,其中a‘是匿名类型。

我想将query传递给ReportingComponent以创建一个新实例。

做这件事最好的方法是什么?

致以亲切的问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-11-11 07:27:22

编写泛型方法并使用类型推断。我经常发现,如果您创建一个与泛型类同名的静态非泛型类,这种方法效果很好:

代码语言:javascript
运行
复制
public static class ReportingComponent
{
  public static ReportingComponent<T> CreateInstance<T> (IQueryable<T> query)
  {
    return new ReportingComponent<T>(query);
  }
}

然后在你的其他代码中,你可以调用:

代码语言:javascript
运行
复制
var report = ReportingComponent.CreateInstance(query);

编辑:我们需要非泛型类型的原因是,类型推断只发生在泛型方法中--即引入新类型参数的方法。我们不能把它放在泛型类型中,因为我们仍然必须能够指定泛型类型才能调用方法,这就失去了全部意义:)

我有一个更详细的blog post

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/280172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档