2014-09-01 77 views
0

我試圖重構當前的過濾解決方案。 我有3類:通用Iqueryable過濾器

class A : C { } 
class B : C { } 
class C { } 

和有一個允許通用參數的方法:

private static IQueryable<T> ApplyFilter<T>(IQueryable query, Filter filter) 
{ 
    IQueryable<C> qq = query.Cast<C>(); 
    if(q == null) 
     throw new Exception("can not cast"); 
    // applying filter 
    return (IQueryable<T>) q; 
} 

最後一行(返程)拋出異常:「無法投型的對象「系統。 Data.Entity.Infrastructure.DbQuery 1[C]' to type 'System.Linq.IQueryable 1 [A]'。「

有誰知道如何解決它? 在此先感謝

回答

0

我把它通過增加一個接口D.最終的解決方案看起來像工作:

private static IQueryable<T> ApplyFilter<T>(IQueryable query, Filter filter) 
    where T: class, DInterface 
{ 
    // can access C class props 
    return query; 
}