2016-04-25 1 views
2

大きなオブジェクトが終了するメソッドのために、かなり大きなコードベースを検索しようとしています。System.Web.Caching.Cacheメソッドのいずれかで使用されています。これらのタイプは時には大きくて、大型オブジェクトヒープになります。これは悪いことです。NDependを使用して、特定のオブジェクト型がSystem.Web.Caching.Cacheに配置されている場所を確認します。

基本的には、いくつかの異なるクラスに継承されているクラスExternalProject.ReallyBigTypeがあります。 私たちはいくつかの異なるメソッドを持っています。System.Web.Caching.Cacheのメソッドを使用するCacheUsingMethodsと呼ぶことができます(他の実装などを介して)。 タイプExternalProject.ReallyBigTypeのオブジェクト(またはExternalProject.ReallyBigTypeから派生したオブジェクト)を使用するCacheUsingMethodsを見つけて、System.Web.Caching.Cacheのいずれかの方法でそれらを終了させたいと考えています。

NDependを使用してこれを達成する方法はありますか?どう

答えて

2

:あなたの応答パトリックため

let bigTypes = Application.Types.Where(t => t.DeriveFrom("ExternalProject.ReallyBigType")) 
let cacheUsingMethods = Application.Methods.WithNameLike("RegeExToMatchThoseMethods") 
from m in cacheUsingMethods.UsingAny(bigTypes) 
let bigTypesUsed = bigTypes.UsedBy(m) 
select new { m, bigTypesUsed } 
+0

多くのおかげで、それはしかし、その依存性の注入は、ここに私の流れを壊しているようだ - 私はキャッシュの部分がそれらを必要とするクラスに注入されている電子。ボーナスとして、実際の 'ExternalProject.ReallyBigType'はコールバックデリゲート(' Func ')を介してキャッシュメソッドに転送されています。 – orelob

関連する問題