我正在尝试重构当前的过滤解决方案。 我有3个班级:
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;
}
最后一行(return)抛出异常:“无法转换类型为'System.Data.Entity.Infrastructure.DbQuery 1[C]' to type 'System.Linq.IQueryable
1 [A]'的对象。”
有谁知道如何修复它? 提前致谢
答案 0 :(得分:0)
我通过添加接口D使其工作。最终的解决方案如下:
private static IQueryable<T> ApplyFilter<T>(IQueryable query, Filter filter)
where T: class, DInterface
{
// can access C class props
return query;
}