0

我有以下方法,我使用它ICloseable来公开我要检查的属性。

问题是返回类型现在是一个 Set 类型ICloseable

有没有办法在T不返回 Set 类型的情况下检查是否已关闭ICloseable

if (typeof(ICloseable).IsAssignableFrom(typeof(T)))
{
    return base.Set<T>().Where(n => !((ICloseable)n).Closed);
}
4

1 回答 1

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一定会奏效,但值得一试。

于 2013-04-30T07:49:35.710 回答