2016-11-12 7 views
-1

私は、個々のファイルを変更することなく、プロジェクトのすべてのコードファイルでLINQのすべての使用法を置き換えるためにいくつかのコードを追加したいと思います。このように:一つの場所でグローバルに、Company.OtherLinqExtensions:代わりに、ここではLINQ-の拡張機能を呼び出す他のクラスを呼び出すためにLINQの使用をグローバルに置き換えてください

var arr = items.Where(i => i.Price > 10).Select(i => i.Name).ToArray(); 

私の代わりに、このクラスにリダイレクトします。

私はここで、 "using System.Linq"をたくさん持っています。 using文をすべて変更することなく、Company.OtherLinqExtensionsにリダイレクトするにはどうすればよいですか?

+0

置き換えなければならない式の例を提示できますか?そして、OtherLinqExtensionsからのメソッドの使い方は? – Alexei

+0

おそらく、私が後で何を後にしているかを説明するこの質問が見つかりました:http://stackoverflow.com/questions/1451099/how-to-override-an-existing-extension-method –

答えて

0

説明したようにLINQを使用し、using System.Linq宣言を持つ名前空間My.Companyにいくつかのクラスがあるとします。次に、あなたのクラスにLINQのメソッドへのすべての呼び出しを「リダイレクト」するために、あなただけ(「マイ」のような)任意の親の名前空間で同じMy.Company名前空間またはであなたのクラスを宣言する必要があります:

namespace My.Company { // OR namespace My { 
    public static class OtherLinqExtensions { 
     public static IEnumerable<T> Select<T, TResult>(this IEnumerable<T> items, Func<T, TResult> selector) { 
      // do your stuff 
     } 
    } 
} 

その後すべての拡張メソッドはOtherLinqExtensionsという拡張子を呼び出すようになりました(もちろん、あなたのバージョンは標準のlinq宣言と正確に一致しています)。

+0

ありがとう!それはまさに私が望んでいたものです! –

関連する問題