![](/img/trans.png)
[英]Return the generic class instance with anonymous type based on Newexpression
[英]Create Generic Class instance based on Anonymous Type
我有一個ReportingComponent<T>
類,它具有構造函數:
public ReportingComponent(IQueryable<T> query) {}
我有針對Northwind數據庫的Linq查詢,
var query = context.Order_Details.Select(a => new
{
a.OrderID,
a.Product.ProductName,
a.Order.OrderDate
});
查詢的類型為IQueryable<a'>
,其中a'是匿名類型。
我想將查詢傳遞給ReportingComponent以創建一個新實例。
做這個的最好方式是什么?
親切的問候。
編寫通用方法並使用類型推斷。 如果您創建一個與通用類同名的靜態非通用類,我通常會發現這種方法很好用:
public static class ReportingComponent
{
public static ReportingComponent<T> CreateInstance<T> (IQueryable<T> query)
{
return new ReportingComponent<T>(query);
}
}
然后,您可以在其他代碼中調用:
var report = ReportingComponent.CreateInstance(query);
編輯:我們需要非泛型類型的原因是類型推斷僅對泛型方法進行 -即引入新類型參數的方法。 我們不能將其放在泛型類型中,因為我們仍然必須能夠指定泛型類型才能調用該方法,這使整個觀點失去了:)
我有一篇博客文章 ,其中有更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.