2011-07-13 22 views
0

正直言って、私は前にdisscussedという拡張メソッドが嫌いです。IQueryableの一般的な拡張メソッド<out T>

私はそれは素敵なように見えているIQueryable<Brand>のために実装された「ApplySorting」として

public static IQueryable<Brand> ApplySorting(this IQueryable<Brand> data, 
       IList<GroupDescriptor> groupDescriptors, 
       IList<SortDescriptor> sortDescriptors) 

を拡張メソッドを持っています。私はカテゴリのための別のメソッドが必要です、私はIQueryable<Category>と別の方法を実装する必要があり、この話が行く。

質問;繰り返し拡張メソッドを停止するにはどうすればIQueryable<T>を定義できますか? これは、事前に(もちろん、それは私に立ち止まっ2010 VS有効なコードではありません。)このようになり

public static IQueryable<T> ApplySorting(this IQueryable<T> data, 
          IList<GroupDescriptor> groupDescriptors, 
          IList<SortDescriptor> sortDescriptors) 
       where T : IEntity 

感謝する必要があります! :)

答えて

3

このお試しください:

public static IQueryable<T> ApplySorting<T>(this IQueryable<T> data, 
          IList<GroupDescriptor> groupDescriptors, 
          IList<SortDescriptor> sortDescriptors) 
       where T : IEntity 

を(私はメソッドに型変数を追加しました)

3

一般的なパラメータを持つためにの方法を作る必要があります。言い換えれば

、これは動作します:

public static IQueryable<T> ApplySorting<T>(this IQueryable<T> data, 
          IList<GroupDescriptor> groupDescriptors, 
          IList<SortDescriptor> sortDescriptors) 
          where T : IEntity 

すべてのLINQの拡張メソッドは、このように定義されている

<T>は、メソッドの名前に存在していることに注意してください)が、ほとんどの場合、具体的な種類を渡しますタイプ推論のためにオプションです。そのため、それを見逃すのは簡単です。

+0

素晴らしいありがとう!私はあなたとリックが同じ答えをして本当に残念ですが、それは最初の答えを記載したので、私はリックの答えを受け入れました。 –

関連する問題