gpt4 book ai didi

c# - lambda 中的类型推断

转载 作者:太空宇宙 更新时间:2023-11-03 21:26:57 24 4
gpt4 key购买 nike

我有这个功能:

 public class Repository : IRepository
{
public List<TEntity> GetOrdered<TEntity, TSortKey>(Func<TEntity, TSortKey> orderBy, int take, params string[] includePaths) where TEntity : AbstractEntity
{
var query = (from ent in this.Context.Set<TEntity>() select ent).IncludePaths(includePaths);

return query.OrderBy(orderBy).Take(take).ToList();
}
}

调用它:

List<Project> p = repository.GetOrdered<Project, string>(x => x.Name, 10);

我想消除在调用时为它提供第二个通用参数的需要,从 API 的角度来看,这是一个交易破坏者。

怎么做?

最佳答案

it's a deal breaker from an API perspective

然后考虑你的交易破裂......你不能部分推断通用参数。如果您的存储库是通用的,您可以:

 public class Repository<TEntity> : IRepository<TEntity> where TEntity : AbstractEntity
{
public List<TEntity> GetOrdered<TSortKey>(Func<TEntity, TSortKey> orderBy, int take, params string[] includePaths)
{
var query = (from ent in this.Context.Set<TEntity>() select ent).IncludePaths(includePaths);

return query.OrderBy(orderBy).Take(take).ToList();
}
}

然后做

List<Project> p = repository.GetOrdered(x => x.Name, 10);

但我不知道这种改变是否适合你。

关于c# - lambda 中的类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26414834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com