我正在从一个庞大的代码库中重构讨厌的东西,并且需要找到一个特定的方法,接受一个相当通用的接口(interface)的实例,用该接口(interface)的特定实现调用。
例如,在 NastyStatic
中是 DoBadThings(IBusinessObject)
方法。我的业务库中有大约 50 个实现 IBusinessObject
的类,包括 DontHurtMe : IBusinessObject
。
我如何才能找到对 NastyStatic.DoBadThings(foo)
的每次调用,但只有 foo
是 DontHurtMe
的实例?
编辑:我正在寻找某种静态分析工具。在 DoBadThings
(或类似的)中设置动态监视并运行应用程序并不是真正的选择。由于我对 DontHurtMe
所做的更改,它已经抛出异常,并且有太多的代码路径无法以这种方式找到所有用法(至少在它上线并且我的用户开始提示之前) .
最佳答案
简单。编写一个以 DontHurtMe 作为参数的 DoBadThings 重载。现在看看它在哪里被调用。这不会检测到使用声明的 IBusinessObject 调用方法的情况,碰巧 是 DontHurtMe - 但我认为静态分析无法检测到这种情况。这将使用声明的 DontHurtMe 调用您的方法。
关于c# - 在使用特定子类型调用时查找特定方法的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026244/