重複の可能性:
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 : '
MyType<TDbContext, TEntity>.Fetch(Expression<Func<TEntity, bool>>, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>>, string)
' がジェネリック型 ' ' をネストしない設計を検討してくださいExpression<Func<TEntity, bool>>
。CA1006 : Microsoft.Design : '
MyType<TDbContext, TEntity>.Fetch(Expression<Func<TEntity, bool>>, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>>, string)
' がジェネリック型 ' ' をネストしない設計を検討してくださいFunc<IQueryable<TEntity>, IOrderedQueryable<TEntity>>
。
今、私はそれらが単なる警告であることを知っており、私はそれらを自由に抑制できます (そして、このシナリオでは過度に衒学的に見えるため、おそらくそうするでしょう)。ただし、興味深いことに、コード分析の警告を発生させずにこの方法と同じことを達成できる設計はありますか?
リチャード