我正在尝试重构当前的过滤解决方案。我有三个班:
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;
}
最后一行(返回)引发异常:"无法强制转换类型为"System.Data.Entity.Infrastructure.DbQuery 1[C]' to type 'System.Linq.IQueryable
1[A]"的对象。"
有人知道怎么修吗?提前感谢
我通过添加接口D使其工作。最终的解决方案看起来像:
private static IQueryable<T> ApplyFilter<T>(IQueryable query, Filter filter)
where T: class, DInterface
{
// can access C class props
return query;
}