可能重复:
Alternative to nested type of type Expression<Func<T>>
使用从MSDN文章收集的Facade / Repository中的方法,我制作了:
public virtual IEnumerable<TEntity> Fetch(
Expression<Func<TEntity, bool>> filter,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy,
string includeProperties)
{
IQueryable<TEntity> query = this.DbContext.Set<TEntity>();
if (filter != null)
{
query = query.Where(filter);
}
if (!string.IsNullOrEmpty(includeProperties))
{
foreach (var includeProperty in includeProperties
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
}
return orderBy == null
? query
: orderBy(query);
}
代码分析会生成2个警告,如下所示:
CA1006:Microsoft.Design:考虑设计在哪里 &#39;
MyType<TDbContext, TEntity>.Fetch(Expression<Func<TEntity, bool>>, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>>, string)
&#39; 没有嵌套通用类型&#39;Expression<Func<TEntity, bool>>
&#39;。CA1006:Microsoft.Design:考虑设计在哪里 &#39;
MyType<TDbContext, TEntity>.Fetch(Expression<Func<TEntity, bool>>, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>>, string)
&#39; 没有嵌套通用类型&#39;Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>>
&#39;。
现在,我知道他们只是警告,我可以自由地压制他们(并且可能会因为他们在这种情况下显得过于迂腐)。但是,出于兴趣,是否有可能的设计与此方法完成相同而不会产生代码分析警告?
理查德