2016-04-25 53 views
2

我试图搜索一个相当大的代码库,以查找大对象最终在任何System.Web.Caching.Cache方法中使用的方法。这些类型有时可能非常大,以至于它们会在大对象堆上出现,而这又是一件坏事。使用NDepend来查找特定对象类型放置在System.Web.Caching.Cache中的位置

基本上我们有ExternalProject.ReallyBigType这个类被继承到几个不同的类中。 而且我们有一些不同的方法,我们称这些为CacheUsingMethods,使用System.Web.Caching.Cache中的方法(通过其他实现等)。 我想查找使用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

相关问题