我有以下方法,我将其转换为ICloseable
以公开我想要检查的属性。
问题是返回类型现在是一组类型ICloseable
。
有没有办法检查T
是否关闭,而不返回ICloseable
类型的一组?
if (typeof(ICloseable).IsAssignableFrom(typeof(T)))
{
return base.Set<T>().Where(n => !((ICloseable)n).Closed);
}
答案 0 :(得分:1)
由于IQueryable<T>
在T中是协变的,您可以尝试:
if (typeof(ICloseable).IsAssignableFrom(typeof(T)))
{
IQueryable<ICloseable> closeables = (IQueryable<ICloseable>) base.Set<T>();
return closeables.Where(n => !n.Closed).Cast<T>();
}
我不知道Cast
肯定会起作用,但值得一试。