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
这似乎是一个相当严重的限制,不是吗?什么是解决方法?
答案 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 }