使用NDepend继承的方法依赖项

时间:2009-09-22 16:14:33

标签: ndepend

NDepend的类浏览器似乎没有显示继承方法的选项。

我们有一个场景,我们有数千个单根模型对象,例如来自 RootModel 。只有 RootModel 定义保存()。如何形成查询以查找 SampleModel (:RootModel)调用保存()的所有实例?

SELECT METHODS WHERE IsUsing "SampleModel.Save()" ORDER BY DepthOfIsUsing

...被拒绝:不是有效的程序集,命名空间,典型,方法或字段名称

这似乎是最好的近似,但并不准确:

SELECT METHODS WHERE IsUsing "SampleModel" AND IsUsing "RootModel.Save()" ORDER BY DepthOfIsUsing

这似乎是一个相当严重的限制,不是吗?什么是解决方法?

1 个答案:

答案 0 :(得分:1)

从NDepend的静态角度来看,类SampleModel没有声明Save()方法。这就是第一个查询无法编译的原因。

在您的情况下,第二个查询确实是件好事。为了正确起见,您可以使用Code Query on LINQ (CQLinq capabilities)并以这种方式重写:

from m in Application.Types.Where(t => t.DeriveFrom("MyNamespace.RootModel"))
         .ChildMethods()
where m.IsUsing("MyNamespace.RootModel.Save()")
select new { m, m.ParentType }