0
鑑於以下兩類:靜態方法/調用者的類類型推斷?
public class ABC
{
public void Accept(Ordering<User> xyz)
{
// Do stuff with xyz...
}
}
public class Ordering<TEntity>
where TEntity : class
{
private readonly Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> Transform;
private Ordering(Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> transform)
{
this.Transform = transform;
}
public static Ordering<TEntity> By<TKey>(Expression<Func<TEntity, TKey>> expression)
{
return new Ordering<TEntity>(query => query.OrderBy(expression));
}
public static Ordering<TEntity> ByDescending<TKey>(Expression<Func<TEntity, TKey>> expression)
{
return new Ordering<TEntity>(query => query.OrderByDescending(expression));
}
public Ordering<TEntity> ThenBy<TKey>(Expression<Func<TEntity, TKey>> expression)
{
return new Ordering<TEntity>(query => this.Transform(query).ThenBy(expression));
}
public Ordering<TEntity> ThenByDescending<TKey>(Expression<Func<TEntity, TKey>> expression)
{
return new Ordering<TEntity>(query => this.Transform(query).ThenByDescending(expression));
}
public IOrderedQueryable<TEntity> Apply(IQueryable<TEntity> query)
{
return Transform(query);
}
}
用於下列方式:
ABC abc = new ABC();
abc.Accept(Ordering<User>.By(u => u.Id));
有沒有什麼辦法來推斷的T
類型,像這樣:
abc.Accept(Ordering.By(u => u.Id));
我剛剛明白了這一點。我只是意識到我需要更新我的問題來複制我的問題。看到我上面的編輯。 – TheCloudlessSky 2010-06-28 14:28:07
本質上,問題在於我實際上將'Expression>表達式'作爲參數傳遞。 –
TheCloudlessSky
2010-06-28 14:42:57
@ TheCloudlessSky:恐怕沒有看到更多的細節,很難知道推薦什麼。 – 2010-06-28 14:47:07