使用NDepend继承的方法依赖关系
NDepend的类浏览器似乎没有显示继承方法的选项。
例如,我们有一个场景,其中有成千上万的根单元模型对象,它们从RootModel下降。 只有RootModel定义了Save() 。 如何构造一个查询来查找SampleModel (:RootModel)调用Save()的所有实例?
SELECT METHODS WHERE IsUsing "SampleModel.Save()" ORDER BY DepthOfIsUsing
...被拒绝: 不是有效的程序集,名称空间,类型,方法或字段名称 。
这似乎是最好的近似值,但不是确切的:
SELECT METHODS WHERE IsUsing "SampleModel" AND IsUsing "RootModel.Save()" ORDER BY DepthOfIsUsing
这似乎是一个相当重的限制,不是吗? 什么是解决方法?
从NDepend的静态角度来看,类SampleModel
没有声明一个Save()
方法。 这就是为什么第一个查询不能编译的原因。
第二个查询的确对你的情况是件好事。 为了做到这一点,您可以使用LINQ上的代码查询(CQLinq功能),并用这种方式重写它:
from m in Application.Types.Where(t => t.DeriveFrom("MyNamespace.RootModel"))
.ChildMethods()
where m.IsUsing("MyNamespace.RootModel.Save()")
select new { m, m.ParentType }
链接地址: http://www.djcxy.com/p/37727.html