我需要找到从“System.Web.UI.Page”派生的所有类,这些类引用从 Page 派生的另一个类......我在 NDepend 中尝试的所有内容都没有给我任何东西,或者每个页面。
我们最近将一个 Asp.Net“站点”转换为“Web 应用程序”,在此过程中发现许多页面与我们数据库层中的类具有相同的类名。它们在不同的命名空间中,但由于所有页面都在同一个命名空间中(现在,在同一个程序集中),我们遇到了一些问题。
大多数情况下,当页面使用数据层类并访问它的成员时,这会导致编译错误,但现在所有页面都在 Web 应用程序中(因此可以互相看到),编译器决定它们引用 Web页面类而不是数据层类。我们担心某些类可能会通过实现具有相同名称的成员而滑过编译时崩溃,因此我们希望找到 .Net 认为网页(继承的类(无论多么远))的任何地方来自 System.Web.UI.Page) 具有对另一个网页的引用。
显然,这个 NDepend CQL 只返回所有页面:
SELECT TYPES FROM ASSEMBLIES "UI"
WHERE IsUsing "System.Web.UI.Page"
AND DeriveFrom "System.Web.UI.Page"
有谁知道这是否可能,或者我是否可以使用 FXCop 或其他东西编写规则?